【问题标题】:What is the difference between Copy Files vs Publish Artifact task in VSTS?VSTS 中的 Copy Files 与 Publish Artifact 任务有什么区别?
【发布时间】:2017-09-25 17:01:12
【问题描述】:

在我的Copy Files 任务中,我将所需的文件复制到我将进行部署的文件共享位置。发布工件步骤有什么用?或者在我的情况下它已经过时了。我对应该在框中输入什么值感到困惑。

【问题讨论】:

    标签: azure-devops azure-pipelines-build-task


    【解决方案1】:
    • 如果您需要将文件/工件复制到 VSTS 服务器,发布工件任务是唯一的选项(通过选择服务器作为工件类型选项)。
    • 如果您需要将文件/工件复制到共享路径,发布工件任务和复制文件任务都可以。并且 Copy Files 任务比 Publish Artifacts 任务更灵活一些,因为您可以在 Contents 选项中指定要复制到共享路径的文件。

    根据您的情况,您可以使用任何任务(发布工件任务和复制文件任务)。由于只需要将$(build.artifactstagingdirectory)下的内容复制到\\my\share\$(Build.DefinitionName)\$(Build.BuildNumber)的分享路径下,这两个任务也可以实现。

    • 如果您使用 Publish Artifacts 任务,您在图片中指定的设置是可以的。它将$(build.artifactstagingdirectory)下的内容复制到\\my\share\$(Build.DefinitionName)\$(Build.BuildNumber)\drop

    • 如果您使用复制文件任务,设置如下。它的结果也与 Publish Artifacts 任务相同。

    【讨论】:

    • VSTS 服务器是指云中的托管代理还是本地代理?我已经在本地设置了代理。
    • 不,它与构建代理无关。工件服务器类型意味着工件被上传到 VSTS 本身,您可以通过构建摘要页面下载工件。答案中列出的条件都适用于托管代理和运营商代理。
    • 我想知道,当一个构建被删除时,发布工件任务是否会将删除的内容清理到共享文件夹中。我们使用 Copy Files 任务已经有一段时间了,我注意到在构建的放置位置中有很多文件夹甚至不再存在......
    • 您能否定义要发布的内容也与发布任务或仅复制文件夹中所有内容的文件夹一起发布?
    • 我正在构建一个控制台应用程序并希望将其部署到本地服务器,但我无法将构建 exe 复制到共享路径。我运行了本地部署代理,它使用 AzureDevOps 上的 CICD 管道在 IIS 中托管了一个 MVC 网站。但是当我处理控制台应用程序时,它不会将最终的 EXE 复制到 onprem 代理共享路径。我在构建管道中尝试了两种方式,您可能会在此处看到:dev.azure.com/MSTCsandippatel/DemoConsoleApp/… 我可以将控制台/win 应用程序(如网站)部署到本地机器还是我做错了 - 我应该尝试 CD 任务吗?
    【解决方案2】:

    我发现了另一个区别,即清理构建的时间(手动删除或保留规则删除它们时)。

    当使用 Publish Artifacts 任务并将共享文件夹作为目标时,已完成放置文件夹的清理。 使用复制文件任务时,未完成放置文件夹的清理。

    如果清理共享文件夹对您来说是个问题,切换到使用“发布工件”任务似乎是个好主意。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-07-25
      • 2012-08-16
      • 2014-03-26
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多