Azure devops 发布分支X策略时的触发器
问题:如何在YAML管道中为以下上下文设置CI/CD。 分支机构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 -
- 主人
- release/{字母顺序名称}例如release/Albert下一个版本是release/Bertrand等等
- 接受:一切强加在主人身上的东西
- 测试:最新版本,例如release/Bertrand
- 沙盒:最新版本-1(这里我们可以测试修补程序)例如:release/Albert
- 实时:最新版本-1(带修补程序)
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"
嗨,你们有并没有检查下面的答案,进展如何?如果有任何问题,请告诉我。