【发布时间】:2021-04-19 18:52:52
【问题描述】:
我们使用 Azure Pipelines(YAML 非经典)进行构建和发布。阶段如下:
- 构建
- Deploy_DEV
- Deploy_UAT
- Deploy_PERF
- Deploy_PROD
YAML 是参数化的,用户可以选择要运行的阶段。例如:
- 构建和部署 DEV,或
- 构建 + 部署 DEV + 部署 UAT。
现在问题出现在以下场景中:
- 构建 + 部署 DEV。 >> 结果:作品
- 部署 SIT(DownloadPipelineArtifact@2 和
runVersion: 'latestFromBranch')>> 结果:工作因为上次构建 ID 产生了工件并且部署成功 - 部署 UAT (DownloadPipelineArtifact@2 with
runVersion: 'latestFromBranch') >> 结果失败,因为最后一次部署到 SIT 的作业没有产生任何工件。
我不知道这是这个管道任务的错误还是缺点,但希望DownloadPipelineArtifact@2 任务指的是生成工件的分支的最后一个构建 ID。从日志看来,DownloadPipelineArtifact@2 任务只是尝试从之前的管道运行中下载工件,而这可能没有产生任何工件。
在任何项目中运行 1 个构建然后随着时间的推移将该构建部署到各种环境(促进工件)是很正常的。所以每次运行的管道阶段如下所示:
- 在提交时构建工件 1
- 将工件 1 部署到 Env x
- 将工件 2 部署到 Env y
- 将工件 3 部署到 Env z ...等。
有人可以建议这是任务的缺点还是我做错了什么?
下面是我的任务配置:
- task: DownloadPipelineArtifact@2
displayName: Download LATEST artifact
inputs:
buildType: 'specific'
project: '$(System.TeamProjectId)'
definition: '$(System.DefinitionId)'
runVersion: 'latestFromBranch'
branchName: '$(Build.SourceBranch)'
targetPath: '$(Pipeline.Workspace)'
【问题讨论】:
标签: visual-studio azure-devops