I have this pipeline (non relevant parts removed):
stages:
- stage: 'PreSteps'
displayName: 'Preparation Steps'
jobs:
- job: 'Check_changes'
steps:
- task: Bash@3
name: 'bash_script1'
inputs:
targetType: 'inline'
script: |
# do some stuff
echo "##vso[task.setvariable variable=SomeVariable_1;isOutput=True]SomeValue_1"
echo "##vso[task.setvariable variable=SomeVariable_2;isOutput=True]SomeValue_2"
echo "##vso[task.setvariable variable=SomeVariable_3;isOutput=True]SomeValue_3"
echo "##vso[task.setvariable variable=SomeVariable_4;isOutput=True]SomeValue_4"
echo "##vso[task.setvariable variable=Changes;isOutput=True]4"
- stage: 'S_Build'
dependsOn: 'PreSteps'
condition: gt(dependencies.PreSteps.outputs['Check_changes.bash_script1.Changes'], 0)
displayName: 'Build and Publish Changed Projects'
variables:
Project_1: $[ stageDependencies.PreSteps.Check_changes.outputs['bash_script1.SomeVariable_1'] ]
Project_2: $[ stageDependencies.PreSteps.Check_changes.outputs['bash_script1.SomeVariable_2'] ]
Project_3: $[ stageDependencies.PreSteps.Check_changes.outputs['bash_script1.SomeVariable_3'] ]
Project_4: $[ stageDependencies.PreSteps.Check_changes.outputs['bash_script1.SomeVariable_4'] ]
jobs:
- template: build.yml
parameters:
Projects:
- $(Project_1)
- $(Project_2)
- $(Project_3)
- $(Project_4)
- stage: 'D_Release'
dependsOn:
- 'S_Build'
- 'PreSteps'
condition: eq(stageDependencies.S_Build.result, 'Succeeded')
displayName: 'Release Changed Projects to DEV'
variables:
Project_1: $[ stageDependencies.PreSteps.Check_changes.outputs['bash_script1.SomeVariable_1'] ]
Project_2: $[ stageDependencies.PreSteps.Check_changes.outputs['bash_script1.SomeVariable_2'] ]
Project_3: $[ stageDependencies.PreSteps.Check_changes.outputs['bash_script1.SomeVariable_3'] ]
Project_4: $[ stageDependencies.PreSteps.Check_changes.outputs['bash_script1.SomeVariable_4'] ]
jobs:
- template: release.yml
parameters:
Projects:
- $(Project_1)
- $(Project_2)
- $(Project_3)
- $(Project_4)
- stage: 'P_Release'
dependsOn:
- 'D_Release'
- 'PreSteps'
condition: eq(stageDependencies.D_Release.result, 'Succeeded')
displayName: 'Release Changed Projects to PROD'
variables:
Project_1: $[ stageDependencies.PreSteps.Check_changes.outputs['bash_script1.SomeVariable_1'] ]
Project_2: $[ stageDependencies.PreSteps.Check_changes.outputs['bash_script1.SomeVariable_2'] ]
Project_3: $[ stageDependencies.PreSteps.Check_changes.outputs['bash_script1.SomeVariable_3'] ]
Project_4: $[ stageDependencies.PreSteps.Check_changes.outputs['bash_script1.SomeVariable_4'] ]
jobs:
- template: release.yml
parameters:
Projects:
- $(Project_1)
- $(Project_2)
- $(Project_3)
- $(Project_4)
Basically I'm generating some values in bash_script1 which I need to use across all the stages.
Is there a way to avoid repeating the variables in each stage? I can't use the syntax $[ ]
directly in the parameters as they don't get expanded in the template.