能否在Azure Pipeline同一流水线内将构件下载到本地指定文件夹?
解答
完全可以在同一条流水线内自动下载已发布的构件,按你的需求可以选择以下几种实现方案:
方案1:使用内置下载任务(最推荐)
无需额外配置权限,直接在流水线的后续任务/阶段中添加DownloadPipelineArtifact@2任务即可,配置示例如下:
- task: DownloadPipelineArtifact@2 inputs: buildType: 'current' # 固定值,代表拉取当前运行的本次流水线的构件 artifactName: 'PublishArtifact' # 和你之前发布的构件名保持完全一致 targetPath: 'C:\test' # 你的目标下载路径
该方案由Azure DevOps官方维护,会自动使用流水线内置服务账号完成权限校验,稳定性和传输速度都有保障,完全适配400MB大小的构件下载。
方案2:纯命令行实现
如果有必须用命令执行的场景,可以使用Azure CLI的相关命令实现,命令示例:
az pipelines runs artifact download ` --artifact-name 'PublishArtifact' ` --path 'C:\test' ` --run-id $(Build.BuildId) ` --organization 'https://dev.azure.com/你的组织名称' ` --project '你的项目名称'
使用该方案需要提前在执行环境中安装Azure CLI并完成DevOps组织的身份认证,确保执行账号有构件的读取权限。
额外优化提示
如果你的发布操作和下载操作在同一个Job的同一个代理节点上运行,你甚至不需要走「发布到服务器再下载」的流程,直接添加复制任务把源路径$(Build.ArtifactStagingDirectory)的内容拷贝到C:\test即可,节省上传下载的时间开销。
内容的提问来源于stack exchange,提问作者kazyama
相关产品推荐
相关产品推荐

