Azure DevOps Azure PowerShell任务输出变量-无法将值传递到第三阶段



我正在尝试在阶段之间传递变量。我能够成功地将值传递到下一个阶段,但之后变量为空。我尝试了所有的方法来获得这个,但失败了

stages:
- stage: InitialStage
jobs:
- job: StandAlone
displayName: Required Stand Alone Job
steps:
- bash: |
echo "##vso[task.setvariable variable=doThing;isOutput=true]Yes"
name: bash_test
- stage: SecondStage
jobs:
- job:
displayName: SecondStage
variables:
variable1: $[ stageDependencies.InitialStage.StandAlone.outputs['bash_test.doThing'] ]

steps:
- task: CmdLine@2
name: test
inputs:
script: |
echo "$(variable1)"
- stage: ThirdStage
jobs:
- job:
displayName: ThirdStage
variables:
variable1: $[ stageDependencies.InitialStage.StandAlone.outputs['bash_test.doThing'] ]

steps:
- task: CmdLine@2
name: test
inputs:
script: |
echo "$(variable1)"

阶段SecondStage的回声会给出值,但ThirdStage是空白的,我怀疑要么我们只能在即时阶段访问变量,要么我做错了什么,对此的任何帮助都将不胜感激。

选项1:

为了将变量传递到另一个阶段,您需要添加isOutput=true

请参见下面的示例;

- task: Bash@3
name:  setprojectName
inputs:
targetType: 'inline' 
script: |
echo "##vso[task.setvariable variable=projectNameGlobal;isOutput=true]$(echo $(Build.Repository.Name)| sed 's|.*/||')"
echo "##vso[task.setvariable variable=projectName]$(echo $(Build.Repository.Name)| sed 's|.*/||')"

projectName仅在填充变量的阶段可用,但projectNameGlobal在下一阶段也可用。

另请参阅文件

选项2:

## azure-pipelines.yml
stages:
- stage: one
jobs:
- job: A
steps:
- task: Bash@3
inputs:
filePath: 'script-a.sh'
name: setvar
- bash: |
echo "##vso[task.setvariable variable=skipsubsequent;isOutput=true]true"
name: skipstep
- stage: two
jobs:
- job: B
variables:
- name: StageSauce
value: $[ stageDependencies.one.A.outputs['setvar.sauce'] ]
- name: skipMe
value: $[ stageDependencies.one.A.outputs['skipstep.skipsubsequent'] ]
steps:
- task: Bash@3
inputs:
filePath: 'script-b.sh'
name: fileversion
env:
StageSauce: $(StageSauce) # predefined in variables section
skipMe: $(skipMe) # predefined in variables section
- task: Bash@3
inputs:
targetType: 'inline'
script: |
echo 'Hello inline version'
echo $(skipMe) 
echo $(StageSauce)

在上面的选项中,您可以看到如何使用一个由任何先前阶段填充的变量

最新更新