我确实有多个版本监视同一个存储库/分支。有没有一种方法可以定义执行构建/发布的顺序?可以在构建完成时定义触发器,然后启动另一个触发器,但是此方法不能并行运行构建。可以的,如果我可以定义发布的顺序。我一直在寻找,但找不到实现此目的的方法。有可能吗?
答案 0 :(得分:2)
您可以定义执行构建(CI)和发布(CD)的顺序。
如果要定义CI构建的执行,最简单的方法是使用YAML并使用多作业模型。然后安排每个作业先依赖于其他作业。
例如:
jobs:
- job: JOB1
pool:
vmImage: 'vs2017-win2016'
steps:
- script: |
echo "hello from vmImage vs2017-win2016"
echo "compile webnoauth.csproj using VS2017"
- task: MSBuild@1
displayName: Build WebFormsNoAuth.csproj
inputs:
solution: $(Build.SourcesDirectory)\aspnetfx\ASPNET.WebForms.v4.7.2\ASPNET.WebForms.v4.7.2.sln
msbuildLocationMethod: version
msbuildVersion: '15.0'
configuration: "Release"
msbuildArguments: /nologo /p:DeployOnBuild=true /p:PublishProfile=FolderProfile2
clean: 'false'
maximumCpuCount: 'false'
- script: |
echo "copy result to staging"
xcopy $(Build.SourcesDirectory)\aspnetfx\ASPNET.WebForms.v4.7.2\WebFormsNoAuth\bin\Release\Publish $(Build.ArtifactStagingDirectory) /E
- task: PublishBuildArtifacts@1
- job: JOB2
dependsOn: JOB1
pool:
vmImage: 'win1803'
steps:
- script: |
echo "hello from vmImage win1803"
md buildresult
echo "copy buildresult into build folder"
xcopy $(Build.ArtifactStagingDirectory) buildresult /E
echo "begin build docker image"
- job: JOB3
dependsOn: JOB2
pool:
vmImage: 'win1803'
steps:
- script: |
echo "Other job to be run in JOB 3"
有关YAML多作业的更多信息,请参见此处: https://docs.microsoft.com/en-us/azure/devops/pipelines/process/multiple-phases?tabs=yaml&view=azure-devops
通过确保发布阶段的连续性来简单地安排发布顺序(在Azure DevOps Pipelines术语中称为 environment )。通常,可视化是从左到右开始的,看起来像一个流程。
例如,您可能具有Dev,SIT,生产版本的订单安排。
Azure DevOps Pipelines上的舞台布置的正式文档是:https://docs.microsoft.com/en-us/azure/devops/pipelines/release/define-multistage-release-process?view=azure-devops#extend-a-release-pipeline-by-adding-stages
答案 1 :(得分:0)
关于构建顺序,您可以在市场中找到some tasks来触发/排队一个新的构建,例如Trigger Build Task:
可用于触发新构建的构建任务,以便 构建链接是可能的。支持条件触发器。
任务的当前版本(V3)如下:
例如,假设您要按此特定顺序运行以下构建:
B1,并且构建的最后一个任务就是我上面提到的那个,以触发构建B2。 B2将设置为手动构建。