繁体   English   中英

将 keyvault 变量传递给模板 azure devops 管道

[英]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)"

看看这个:

https://docs.microsoft.com/en-us/azure/devops/pipelines/process/variables?view=azure-devops&tabs=yaml%2Cbatch

有一些记录在案的例子 - 它可能会有所帮助。 但是,为什么不在 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM