我正在尝试编写一个 Azure DevOps YAML 管道,我在前一个作业中动态设置部署环境。这是我正在尝试做的一个概念性示例:
pool:
vmImage: 'ubuntu-latest'
stages:
- stage: SetVariable
jobs:
- job: SetVariableJob
steps:
- script: |
echo "##vso[task.setvariable variable=environmentName;isOutput=true]TestEnvironmentName"
name: setvarStep
- stage: Deploy
dependsOn: SetVariable
variables:
environmentName: $[ dependencies.SetVariable.outputs['SetVariableJob.setvarStep.environmentName'] ]
jobs:
- deployment: DeployWeb
environment: $(environmentName)
strategy:
runOnce:
deploy:
steps:
- script: echo Hello, $(environmentName)!
出了点问题,因为
echo Hello, $(environmentName)!
只是输出:Hello, !
如果你想跨阶段共享变量。你可以用
stageDependencies.stageName.jobName.outputs['stepName.variableName']
因此您可以如下修改 yaml 文件:
- stage: Deploy
dependsOn: SetVariable
variables:
environmentName: $[ stageDependencies.SetVariable.SetVariableJob.outputs['setvarStep.environmentName'] ]
jobs:
- deployment: DeployWeb
environment: $(environmentName)
strategy:
runOnce:
deploy:
steps:
- script: echo Hello, $(environmentName)!