Azure DevOps YAML Pipeline 基于变量设置部署环境

问题描述 投票:0回答:1

我正在尝试编写一个 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, !

azure-devops yaml azure-pipelines-yaml
1个回答
0
投票

如果你想跨阶段共享变量。你可以用

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)!

更多信息您可以参考https://learn.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch#set-a-multi-job-输出变量

© www.soinside.com 2019 - 2024. All rights reserved.