1

我有一个包,它是通过从 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 代理服务,重新启动管道,但结果各不相同。任何人都可以帮助了解如何使管道仅选择以黑色突出显示的特定文件夹。神器画面

对于给定的环境,我的管道任务有 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.部署\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

4

1 回答 1

1

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

解决方案:

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

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

我们也可以选择 ti run CMD taskwith rmdir(for directories)/del(for files)command 来删除/移除最终之前不需要的文件/文件夹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神器的最终内容:

在此处输入图像描述

于 2020-09-25T02:20:29.903 回答