我可能以错误的方式处理这个问题,但我们目前有一个 env-deploy-template.yaml
其中包含一些参数,例如部署环境名称,然后是运行我们的部署作业的阶段。
所以像这样:
parameters:
- name: DeployEnv
type: string
default: "Test"
stages:
- stage: some-name
displayName: "Deploy To ${{parameters.DeployEnv}}"
variables:
- group: "some-library.${{parameters.DeployEnv}}"
jobs:
- job: do-some-deployment-stuff
displayName: "Do Some Stuff"
steps:
- task: ...
目前,它在主 Azure 管道 yaml 中的用法如下所示:
trigger:
- some-branch
pool:
vmImage: ubuntu-latest
stages:
- stage: Build
displayName: "Build"
jobs:
- job: ...
- template: env-deploy-template.yml
parameters:
DeployEnv: "Test"
Name: "DeployToTest"
- stage: RunAcceptanceTests
dependsOn:
- DeployToTest
displayName: "Run Acceptance Tests"
variables:
- group: some-library.Test
jobs:
- job: RunAcceptanceTests
displayName: "Run Acceptance Tests"
steps:
- task: ...
此时我们已经自动部署到 Test
并且验收测试已经运行并验证,我们希望有一个批准步骤,供测试中的人员签署,然后让下一步运行相同的模板,但部署到 UAT
例如。
Azure 文档说审批阶段的配置如下所示:
jobs:
- deployment: DeployToUAT
displayName: "Deploy To UAT"
dependsOn: DeployToTest
environment: "uat" # assuming an environment exists in azure for uat with someone set up as an approver
strategy:
runOnce:
deploy:
steps: ...
这里的问题是我不想在这里运行一些步骤,我希望它运行 env-deploy-template.yaml
具有一些针对 UAT
的不同参数环境配置等
那么有没有办法告诉上面的部署部分它不应该执行步骤而应该直接运行模板?还是我的做法完全错误,而在此之后我应该有另一份工作,这取决于上面的门控部署部分,然后运行模板?
我在网上找不到任何使用模板的示例,我认为这一定是可能的,所以任何帮助都会很棒。
最佳答案
我不确定我是否了解您遇到的困难。您应该能够将 - job: do-some-deployment-stuff
转换为 - deployment: do-some-deployment-stuff
,并进行适当的更新以添加部署作业需要的其他参数,例如环境
。
即
stages:
- stage: some-name
displayName: "Deploy To ${{parameters.DeployEnv}}"
variables:
- group: "some-library.${{parameters.DeployEnv}}"
jobs:
- deployment: do-some-deployment-stuff
environment: ${{parameters.DeployEnv}}
displayName: "Do Some Stuff"
strategy:
runOnce:
deploy:
steps:
- task: ...
关于azure - Azure Pipeline 可以在门控/批准阶段使用模板吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72912228/