天蓝色devops-定义构建和发布顺序

时间:2019-02-20 22:23:54

标签: azure-devops azure-pipelines

我确实有多个版本监视同一个存储库/分支。有没有一种方法可以定义执行构建/发布的顺序?可以在构建完成时定义触发器,然后启动另一个触发器,但是此方法不能并行运行构建。可以的,如果我可以定义发布的顺序。我一直在寻找,但找不到实现此目的的方法。有可能吗?

2 个答案:

答案 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,生产版本的订单安排。

release order sample

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)如下:

Trigger Build screenshot

例如,假设您要按此特定顺序运行以下构建:

  1. B1
  2. B2
每当代码更改(持续集成)时,都会触发

B1,并且构建的最后一个任务就是我上面提到的那个,以触发构建B2。 B2将设置为手动构建。