azure-devops - Azure Artifacts 仅下载在构建服务器上部署所需的特定文件
问题描述
我有一个包,它是通过从 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.部署
代理作业:执行计划:
并行度:无;超时:0 作业取消超时:1准备包:
脚本路径:$(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
部署:脚本路径:$(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
解决方案
整个构建工件将被下载以进行部署是设计使然,我们无法在发布管道中控制此行为。此外,无需在您的场景中更改此行为。
解决方案:
为了实现您想要的,建议管理要在构建管道中发布的文件夹。我们需要做的就是确保Drop
工件只有所需的文件夹。
我们可以使用带有 xcopy 命令的CMD 任务将特定文件夹复制到我们发布构建工件的路径中,这样Drop
工件就只包含我们需要的特定文件夹。
我们也可以选择 ti run CMD task
with 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神器的最终内容:
推荐阅读
- javascript - 使用递归和归约对数组求和
- java - 如何深拷贝(克隆)HttpServletRequest?
- python - 恢复向量的排列
- python-2.7 - 在 GUI 窗口中包含两个 ttk 日历按钮,python 2.7
- windows - 当 Application.Resource 影响库控件的外观时,如何管理 UI 库的应用程序资源?
- python - 将一维数组转换为稀疏矩阵
- python - 完成后将 QRunnable 连接到函数/方法
- python - 使用“从文件名导入函数名”导入运行我的整个脚本
- c++ - 使用 C++ GMock 匹配器测试 unordered_map 的键是否来自一组键
- c++ - 如何在 QTreeView 的第二列中添加项目