【发布时间】:2021-10-19 18:00:01
【问题描述】:
我需要几个作业模板,但我无法配置条件和依赖项以按照我的意愿运行。我有下面的基本yaml:
parameters:
- name: environment
displayName: Environment
- name: action
values:
- deploy
- undeploy
- redeploy
default: redeploy
stages:
- stage: app
displayName: App
jobs:
- deployment: kickoff
environment:
name: ${{ parameters.environment }}
resourceType: virtualMachine
tags: app
strategy:
runOnce:
deploy:
steps:
- checkout: none
- powershell: Write-Host "Run kickoff tasks"
- template: undeploy.yml
parameters:
environment: ${{ parameters.environment }}
action: ${{ parameters.action }}
- template: deploy.yml
parameters:
environment: ${{ parameters.environment }}
action: ${{ parameters.action }}
我的要求如下:
- Undeploy.yml:如果 Action = ‘Deploy’,则不运行。如果 Action = ‘Undeploy’,则仅运行此模板。 Action = ‘Redeploy’,运行两个模板,但必须先运行 undeploy.yml。
- Deploy.yml:如果 Action = ‘Deploy’,则仅运行此模板。如果 Action = ‘Undeploy’,则不运行。如果 Action = ‘Redeploy’,则运行两个模板,但 deploy.yml 必须第二个运行。
我能做到的最接近的是将模板 yaml 设置如下:
undeploy.yml
parameters:
- name: environment
default: environmentToDeployTo
- name: action
values:
- deploy
- undeploy
- redeploy
default: redeploy
jobs:
- deployment: undeploy
dependsOn: kickoff
condition: ne ('${{parameters.action}}', 'deploy')
environment:
name: ${{ parameters.environment }}
resourceType: virtualMachine
tags: app
strategy:
runOnce:
deploy:
steps:
- checkout: none
#undeploy steps here#
部署.yml
parameters:
- name: environment
default: environmentToDeployTo
- name: action
values:
- deploy
- undeploy
- redeploy
default: redeploy
jobs:
- deployment: dploy
dependsOn: undeploy
condition: ne ('${{parameters.action}}', 'undeploy')
environment:
name: ${{ parameters.environment }}
resourceType: virtualMachine
tags: app
strategy:
runOnce:
deploy:
steps:
- checkout: none
#dploy steps here#
此结果仅影响 deploy.yml,但无法单独运行 - undeploy.yml 作业模板必须事先运行。但是,如果没有“dependsOn”,我看不出有其他方法可以确保 undeploy.yml 先运行。
有没有按照上述要求实现这一点?
提前致谢
【问题讨论】:
-
查看更多模板会很有用。看到扩展的模板也没有什么坏处(从管道 YML 本身,点击汉堡包并下载完整的 YML - 它会将模板扩展出来,并且可以用于调试)
-
找不到汉堡图标,但我已将 yaml 复制到原帖中
标签: azure-devops yaml