【问题标题】:set and refer to variables in yaml在 yaml 中设置和引用变量
【发布时间】:2022-01-07 00:55:35
【问题描述】:

我有以下 yml 代码设置和引用一些变量,如下所示:

<one.yml>
- task: AzurePowerShell@4
  displayName: 'Copy functions templates'
  inputs:
    azureSubscription: ${{parameters.serviceConnection}}
    ScriptPath: ${{ parameters.root }}/Scripts/ReleaseManagement/CopyChildTemplatesToContainer.ps1
    ScriptArguments: '-resourceGroupName ''${{ parameters.solutionAbbreviation}}-data-${{ parameters.environmentAbbreviation}}'' 
  name: copyFunctionsTemplates

- powershell: |
    Write-Host "##vso[task.setvariable variable=data_containerSASToken;isOutput=true]$(copyFunctionsTemplates.containerSASToken)"
    Write-Host "##vso[task.setvariable variable=data_containerEndPoint;isOutput=true]$(copyFunctionsTemplates.containerEndPoint)"
  displayName: 'set data output variables'
  name: dataVariables
  
 <two.yml>
 
  stages:
  - deployment: ${{ parameters.stageName }}_DeployResources
    displayName: ${{ parameters.stageName }}_DeployResources
  - stage: ${{ parameters.stageName }}
    dependsOn: ${{ parameters.dependsOn }}
    condition: ${{ parameters.condition }}
    
    jobs:
    - deployment: ${{ parameters.stageName }}_DeployResources
      displayName: ${{ parameters.stageName }}_DeployResources
       steps:
       - template: one.yml
               
    jobs:
    - job: ${{ parameters.stageName }}_DeployFunctions
      dependsOn: ${{ parameters.stageName }}_DeployResources
      variables:
        data_containerEndPoint: $[ dependencies.DeployResources.outputs['DeployResources.dataVariables.data_containerEndPoint'] ]
        data_containerSASToken: $[ dependencies.DeployResources.outputs['DeployResources.dataVariables.data_containerSASToken'] ]       
      steps:       
        - ${{ each func in parameters.functionApps }}:
          - template: three.yml              
              
              
<three.yml>           

steps:

- task: AzureResourceGroupDeployment@2
  displayName: 'deploy ${{ parameters.name }} data resources'
  inputs:
    azureSubscription: ${{parameters.serviceConnection}}
    resourceGroupName: ${{parameters.solutionAbbreviation}}-data-${{parameters.environmentAbbreviation}}
    location: ${{parameters.location}}
    csmFile: ${{ parameters.root }}/functions_arm_templates/${{ parameters.name }}/Infrastructure/data/template.json
    csmParametersFile: ${{ parameters.root }}/functions_arm_templates/${{ parameters.name }}/Infrastructure/data/parameters/parameters.${{parameters.environmentAbbreviation}}.json
    overrideParameters: -environmentAbbreviation "${{parameters.environmentAbbreviation}}" 
                        -tenantId "${{parameters.tenantId}}"
                        -solutionAbbreviation "${{parameters.solutionAbbreviation}}" 
                        -containerBaseUrl "$(data_containerEndPoint)functions/${{ parameters.name }}/Infrastructure/data/" 
                        -containerSasToken "$(data_containerSASToken)"
    deploymentMode: 'Incremental'

在运行管道时启用调试模式时,我看到任务“复制函数模板”中为 data_containerSASToken 和 data_containerEndPoint 打印的值,但是我看到任务“部署数据资源”中的空值。我错过了什么?

【问题讨论】:

    标签: azure-devops yaml


    【解决方案1】:

    当您从上一个作业中检索输出时,您的问题可能出在:

    data_containerEndPoint: $[ dependencies.DeployResources.outputs['DeployResources.dataVariables.data_containerEndPoint'] ]
    

    那是在寻找一个名为 DeployResources 的先前工作,但先前的工作实际上称为 {{ parameters.stageName }}_DeployResources

    【讨论】:

      猜你喜欢
      • 2022-06-27
      • 1970-01-01
      • 1970-01-01
      • 2012-12-05
      • 2021-11-11
      • 2022-08-11
      • 2021-11-23
      • 2013-03-14
      相关资源
      最近更新 更多