![](/img/trans.png)
[英]Choose pool on job template based on variable declared at parent stage using yaml azure devops pipeline (AZDO)
[英]Pass keyvault variable to stage template azure devops pipeline
如果我做同样的事情但不使用模板,所以在 2 个阶段之间传递变量,那么它可以工作,我可以回显“$(varFromStageA)”,但是当我使用模板实现相同的时候,变量是空白的。
azure-pipeline.yaml
stages:
- stage: A
jobs:
- job: JA
steps:
- task: AzureKeyVault@1
displayName: 'Get Secret'
inputs:
azureSubscription: "***********"
KeyVaultName: "*****"
SecretsFilter: '*'
RunAsPreJob: true
- script: |
echo "This is job Foo."
echo "##vso[task.setvariable variable=doThing;isOutput=true]$(MySecret)"
name: DetermineResult
- script: echo $(DetermineResult.doThing)
name: echovar
我的管道模板.yaml
parameters:
#source
sourceAccountEndpoint: '******'
sourceDatabaseName: '*****'
sourceAccount: '****'
sourceEnvironment: '******'
- stage: DownloadScript
displayName: migrata data
dependsOn: A
jobs:
- job: Pull
variables:
varFromStageA: $[stageDependencies.A.DetermineResult.outputs['DetermineResult.doThing'] ]
pool:
vmImage: windows-latest
displayName: migrate
steps:
- checkout: self
- task: Powershell@2
inputs:
targetType: 'inline'
script: |
echo "$(varFromStageA)"
看看这个:
有一些记录在案的例子 - 它可能会有所帮助。 但是,为什么不在 yaml 文件中(即在阶段之上)设置一个全局变量呢? 从你的问题中不清楚为什么你不能这样做。
如果可以的话,像这样:
variables: var1: newitem stages: - stage: one etc
如果这不起作用,请尝试以下方法:
https://arunksingh16.medium.com/azure-devops-share-variable-across-stages-9bca85abfe8a
https://stefanstranger.github.io/2019/06/26/PassingVariablesfromStagetoStage/
请参阅此文档: 作业可以访问前一阶段的输出变量
阶段间引用变量的格式如下:
stageDependencies.stageName.jobName.outputs['stepName.variableName']
在您的 YAML 示例中,stageName:A,JobName:JA。
因此,您需要使用以下格式在模板中定义变量:
varFromStageA: $[stageDependencies.A.JA.outputs['DetermineResult.doThing']
然后可以传递变量的值。
模板示例:
stages:
- stage: DownloadScript
displayName: migrata data
dependsOn: A
jobs:
- job: Pull
variables:
varFromStageA: $[stageDependencies.A.JA.outputs['DetermineResult.doThing'] ]
pool:
vmImage: windows-latest
displayName: migrate
steps:
- checkout: self
- task: Powershell@2
inputs:
targetType: 'inline'
script: |
echo "$(varFromStageA)"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.