如何安排一个阶段在一天中的特定时间在多阶段 azure devops 管道中运行,但仅针对最新版本?
例如,假设我有一个组合构建和发布管道...
一旦到达预定发布时间,它是否会为当天创建的每个管道启动 4 个同时部署?我如何确保它只安排最新的?如果我想确保即使没有代码更改也能运行该部署阶段,该怎么办?
我可以使用经典版本解决这个需求,方法是安排在特定时间使用最新工件创建和部署版本。那么那天运行了多少构建并不重要。
答案 0 :(得分:1)
我建议将您的管道分解为两个不同的流程:
这消除了场景的复杂性,同时仍然在签入时为您提供构建验证。
答案 1 :(得分:1)
如何安排一个阶段在一天中的特定时间在多阶段 azure devops 管道中运行,但仅针对最新版本?
根据您的要求,我建议您可以使用 cron parameters(Scheduled triggers) 来设置部署。然后它可以安排一个阶段在一天中的特定时间运行。
<块引用>我如何确保它只安排最新的
要使用最新的工件,您可以添加[下载构建/管道工件任务] 2 在您的部署阶段并将版本设置为最新。
同时,您可以使用 condition 来确定要运行的阶段。
这是我的例子:
schedules:
- cron: "0 0 * * *"
displayName: Daily midnight build
branches:
include:
- main
pool:
vmImage: ubuntu-latest
stages:
- stage: A
condition: eq(variables['Build.Reason'], 'IndividualCI')
jobs:
- job: A1
steps:
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.Sourcesdirectory)'
ArtifactName: 'drop'
publishLocation: 'Container'
- stage: B
condition: eq(variables['Build.Reason'], 'Schedule')
jobs:
- job: B1
steps:
- task: DownloadBuildArtifacts@0
inputs:
buildType: 'specific'
project: 'Googletest'
pipeline: '507'
buildVersionToDownload: 'latest'
downloadType: 'single'
artifactName: 'drop'
downloadPath: '$(System.ArtifactsDirectory)'
结果:
当您签入更改并触发构建时,它将运行第一阶段(构建)。
当管道被 Schedule 触发时,它会运行第二阶段(部署)。
部署阶段将下载最新的工件。那么当天运行了多少构建都无关紧要。