Azure devops 发布分支X策略时的触发器

Azure devops 发布分支X策略时的触发器,azure-devops,continuous-integration,azure-pipelines,azure-pipelines-release-pipeline,azure-pipelines-yaml,Azure Devops,Continuous Integration,Azure Pipelines,Azure Pipelines Release Pipeline,Azure Pipelines Yaml,问题:如何在YAML管道中为以下上下文设置CI/CD。 分支机构 主人 release/{字母顺序名称}例如release/Albert下一个版本是release/Bertrand等等 环境 接受:一切强加在主人身上的东西 测试:最新版本,例如release/Bertrand 沙盒:最新版本-1(这里我们可以测试修补程序)例如:release/Albert 实时:最新版本-1(带修补程序) 最接近的解决方案 构建:创建项目工件 build.yml trigger: - master -

问题:如何在YAML管道中为以下上下文设置CI/CD。

分支机构

  • 主人
  • release/{字母顺序名称}例如release/Albert下一个版本是release/Bertrand等等
环境

  • 接受:一切强加在主人身上的东西
  • 测试:最新版本,例如release/Bertrand
  • 沙盒:最新版本-1(这里我们可以测试修补程序)例如:release/Albert
  • 实时:最新版本-1(带修补程序)
最接近的解决方案

构建:创建项目工件 build.yml

trigger:
- master
- release/*

pool:
  vmImage: 'ubuntu-latest'

steps:

- powershell: |
    New-Item -Path . -Name "testfile1.txt" -ItemType "file" -Value "This is a text string."

- publish: $(Pipeline.workspace)
  artifact: testArtifact
发布阶段1:部署主分支以接受 释放相位1.yml

trigger: none

resources:
  pipelines:
    - pipeline: pipelineId
      source: build
      trigger:
        branches: 
        - master

pool:
  vmImage: 'ubuntu-latest'

jobs:
- deployment: DeployWeb
  environment: 'testenvironment'
  strategy: 
    runOnce:
      deploy:
        steps:
        - script: echo FOO
发布阶段2:部署发布分支进行测试 释放相2.yml

trigger: none

resources:
  pipelines:
    - pipeline: pipelineId
      source: build
      trigger:
        branches: 
        - release/current

pool:
  vmImage: 'ubuntu-latest'

jobs:
- deployment: DeployWeb
  environment: 'testenvironment'
  strategy: 
    runOnce:
      deploy:
        steps:
        - script: echo FOO
发布阶段3:将发布阶段1分支部署到沙箱,并在手动批准后上线 释放相位3.yml

trigger: none

resources:
  pipelines:
    - pipeline: pipelineId
      source: build
      trigger:
        branches: 
        - release/previous


pool:
  vmImage: 'ubuntu-latest'

jobs:
- deployment: DeployWeb
  environment: 'testenvironment'
  strategy: 
    runOnce:
      deploy:
        steps:
        - script: echo FOO
此解决方案无法满足我们需求的原因:

  • 发布分支的名称不是静态的
  • 我们应该能够运行release-phase3.yml管道,而无需在此分支上运行构建。它应该从该分支的最新版本下载工件。事实并非如此

SHORT-ON-PURPOSE

由于您有多个分支(主分支和发布分支),因此会构建不同的分支并将其部署到不同的环境中。因此,您可以尝试在每个分支中使用CI build yaml管道,并将CD部署yaml管道置于主分支中。(您必须在每个分支中使用build yaml文件才能生成此分支中的代码。您可以对此进行检查)

下面是一个简单的例子

总支

有azure-pipelines.yml和template-deploy.yml。在azure-pipelines.yml中,
环境
值将作为参数传递给template-deploy.yml。以便将构建部署到相应的环境中

azure-pipelines.yml:

trigger: 
- master
- release/*

pool:
  vmImage: 'windows-latest'

resources:
  repositories:
    - repository: deploy
      type: git
      name: {project name}

jobs: 
- job: Build
  steps: 
  - script:  echo "start build job"

- template: template-deploy.yml@deploy
  parameters: 
    envir: "prod"
template-deploy.yml:

parameters:
  envir: ""

jobs:
- deployment: DeployWeb
  environment: '${{parameters.envir}}'
  strategy: 
    runOnce:
      deploy:
        steps:
        - script: echo FOO
在发布分支中

您可以定义其单个ci构建yaml,如下例所示:

发布阶段2分支中的azure-pipelines.yml:

pool:
  vmImage: 'windows-latest'

resources:
  repositories:
    - repository: deploy
      type: git
      name: {project name}

jobs: 
- job: Build
  steps: 
  - script:  echo "start build job"

- template: template-deploy.yml@deploy
  parameters: 
    envir: "test"

嗨,你们有并没有检查下面的答案,进展如何?如果有任何问题,请告诉我。