针对不同分支/环境的不同azure-pipelines.yml

时间:2019-07-08 11:24:56

标签: azure-devops yaml azure-pipelines azure-pipelines-release-pipeline

我在“ develop”分支中有一个azure-pipelines.yml,配置为在每次构建后触发CI / CD。但是对于“发布”分支,我希望拥有具有不同流程的不同管道。 如何区分不同环境下管道中的不同流量?

这是我文件的开头。

trigger:
- develop

pool:
  vmImage: 'ubuntu-latest'

steps:
- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'

2 个答案:

答案 0 :(得分:1)

  

这些软件包应适合于部署到包括生产在内的任何环境。不要配置分支或构建,以使每个环境都是单独构建的。 -用于Azure的.NET DevOps,作者是Jeffrey Palermo

据我了解,他们建议制作一个程序包并将同一程序包部署到不同的环境。

答案 1 :(得分:0)

取决于您要确切执行的操作,可以使用条件:

- task: NodeTool@0
  inputs:
    versionSpec: '10.x'
  displayName: 'Install Node.js'
  condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/master'))
  # obviously you'd need to put conditions on all the steps 

或者您可以创建一个完全不同的管道,并仅在master上触发该触发器。

我认为这也会起作用:

steps:
- ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/master') }}:
  - task: NodeTool@0
    inputs:
      versionSpec: '10.x'
    displayName: 'Install Node.js'
  - powershell: 'get-process'

这样,您可以将多个任务放在同一if下。