在 Azure Devops Pipelines 中,我想设置 x 个变量并在下一阶段访问它们

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

我正在从 msft 文档中查看这个示例:

stages:
- stage: A
  jobs:
  - job: A1
    steps:
     - bash: echo "##vso[task.setvariable variable=myStageVal;isOutput=true]this is a stage output variable"
       name: MyOutputVar
- stage: B
  dependsOn: A
  jobs:
  - job: B1
    variables:
      myStageAVar: $[stageDependencies.A.A1.outputs['MyOutputVar.myStageVal']]
    steps:
      - bash: echo $(myStageAVar)

https://learn.microsoft.com/en-us/azure/devops/pipelines/process/set-variables-scripts?view=azure-devops&tabs=bash

在上面的例子中,我是否可以在无需设置的情况下访问阶段 B 中的变量:

  - job: B1
    variables:
      myStageAVar: $[stageDependencies.A.A1.outputs['MyOutputVar.myStageVal']]

基本上,我尝试在阶段

##vso
中使用
A
动态设置 x 个变量,因此我需要能够在阶段
B
中访问它,而不必使用该
variables:
部分。

我可以在访问步骤中执行类似

$(stageDependencies.A.A1.outputs['MyOutputVar.myStageVal')
的操作吗? 我在文档中没有看到任何这样的示例。

更新:我确实尝试过,但没有成功:

stages:
- stage: A
  jobs:
  - job: A1
    steps:
     - bash: echo "##vso[task.setvariable variable=myStageVal;isOutput=true]this is a stage output variable"
       name: MyOutputVar
- stage: B
  dependsOn: A
  jobs:
  - job: B1
    steps:
      - bash: echo $(stageDependencies.A.A1.outputs['MyOutputVar.myStageVal'])

回到我的主要问题,有没有办法在没有阶段 b 中的变量:部分的情况下访问这个变量?

更新:我的案例的更具体示例

stages:
- stage: A
  jobs:
  - job: A1
    steps:
     - script: |
       for cluster in $clusters; do
         VARIABLE_NAME="live_${cluster}_${{ parameters.environment }}"
         echo "##vso[task.setvariable 
         variable=$VARIABLE_NAME;isOutput=true]my unique ${{ parameters.environment }}
       done
- stage: B
  dependsOn: A
  jobs:
  - job: B1
    steps:
      - bash: echo "now i want to access a specific variable that was set in the above stage"

以上是我想要实现的目标的简化示例。 我知道创建的每个 var 将基于我正在创建的循环,但我不知道如何动态指定阶段 b 中的变量:部分中的所有变量,因此我尝试直接访问它们。

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

您可以考虑一个解决方法:

  1. 创建变量组。 enter image description here

  2. 在您的管道中,您可以引用该变量组,以便该管道中的任务可以访问该组中的变量。

variables:
- group: myVariabes
  1. 在需要设置一些新变量的管道作业中,您可以调用REST API“Variablegroups - Update”将这些新变量和值添加到上面创建的变量组中。

  2. 然后后续的作业/阶段可以直接访问变量组中的变量。


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