【问题标题】:Azure Artifacts to download only specific files required for deployment on build serverAzure Artifacts 仅下载在构建服务器上部署所需的特定文件
【发布时间】:2020-09-24 16:05:28
【问题描述】:

我有一个包,它是通过从 Artifacts 中选择文件手动准备的 然后下载该软件包并将其传输到服务器,然后从那里执行 powershell 脚本 部署。我们想通过 CI 管道实现部署,以下是我们正在执行的任务,创建了一个具有以下 2 个步骤的设置:工件和阶段 已设置的管道运行良好,可以正常下载构建代理服务器上的所有文件,然后根据需要成功执行脚本,但问题来自 Artifacts 部分,它正在下载所有其他文件以及从我们只需要 5 个的 drop -6 zip 文件和其余的都不需要。我希望管道仅从成功构建中下载特定文件夹,然后从构建服务器执行脚本。 例如下面它的下载所有但实际上我们只需要图像中突出显示的文件夹中的文件:

管道有时会执行并成功完成,有时会花费更长的时间或失败 以下错误信息:

2020-09-08T03:36:33.6433775Z 还剩 1 次下载。
2020-09-08T03:36:38.6591164Z 剩余 1 次下载。
2020-09-08T03:36:43.6665857Z 还剩 1 次下载。
2020-09-08T03:36:43.6666024Z ##[警告] 3 分钟内没有下载任务完成。 剩余任务状态:
2020-09-08T03:36:43.6666545Z ##[警告] WaitingForActivation: 1 个任务。
2020-09-08T03:36:48.6822324Z 还剩 1 次下载。
2020-09-08T03:36:53.6868753Z 剩余 1 次下载。
....

我已尝试重启 VSTS 代理服务,重启管道但结果不同。 任何人都可以帮助了解如何使管道仅选择以黑色突出显示的特定文件夹。 Artifacts screen.

对于给定的环境,我的管道任务有 3 个步骤:
1.代理工作
2.准备包裹
3.部署

  1. 代理工作: 执行计划:
    平行度:无; 超时:0 作业取消超时:1

  2. 准备包裹:
    脚本路径:$(System.DefaultWorkingDirectory)/TestRelease2020-1.1/drop/Tools/A/_1.ps1
    论据: “.\Tools\Test.Deploy\Test.Deploy.exe”
    “.\Tools\Test.Deploy\Xml\A_PreparePackage.xml” "源\Project_ABCProject\XYZPackages"

    工作目录:$(System.DefaultWorkingDirectory)/TestRelease2020-1.1/drop

  3. 部署: 脚本路径:$(System.DefaultWorkingDirectory)/TestRelease2020-1.1/drop/Tools/A/_deploy_1.ps1
    论据: “.\Tools\Test.Deploy\Test.Deploy.exe”
    “.\Tools\Test.Deploy\Xml\A_config.xml” 工作目录:$(System.DefaultWorkingDirectory)/TestRelease2020-1.1/drop

【问题讨论】:

  • 您好,请问这个问题呢?下面的答案是否解决了您的问题,如果是,您可以 Accept it as an Answer ,这样它可以帮助遇到相同问题的其他社区成员,我们可以存档这个帖子,谢谢。
  • 根据设计,发布管道将下载整个构建工件。这就是为什么我建议在构建管道中指定文件夹的原因,如果您仍然被阻止,请随时告诉我:-)

标签: azure-devops azure-artifacts azure-pipelines-release-task azure-pipelines-tasks


【解决方案1】:

按设计,将下载整个构建工件以进行部署,我们无法在发布管道中控制此行为。此外,无需在您的场景中更改此行为。

解决方案:

为了实现您想要的,建议管理要在构建管道中发布的文件夹。我们需要做的就是确保Drop 工件只有所需的文件夹。

我们可以使用CMD task和xcopy命令将特定文件夹复制到我们发布构建工件的路径中,这样Drop工件就只包含我们需要的特定文件夹。

我们也可以选择运行CMD taskrmdir(for directories)/del(for files) 命令来删除/移除最终Publish Artifact task 之前不需要的文件/文件夹。

简单测试:

然后在 Publish Build Artifact 任务之前执行一个 CMD 任务来选择特定文件夹:

xcopy "Source\Project\ABC Project\XYZ Packages" "$(build.artifactstagingdirectory)\XYZ Packages\" /s /e /h /y
xcopy "Tools\A" "$(build.artifactstagingdirectory)\A\" /s /e /h /y
xcopy "Tools\B" "$(build.artifactstagingdirectory)\B\" /s /e /h /y
xcopy "Tools\C" "$(build.artifactstagingdirectory)\C\" /s /e /h /y

Drop 神器的最终内容:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-02
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多