Azure管道-使用模板任务中的变量集作为另一个模板任务的参数



我创建了两个模板——一个用于获取和设置一些配置,如区域名称,另一个用于部署。我正在尝试使用配置模板任务中设置的变量作为部署模板的参数输入。有实际的方法吗?

我的配置模板:

steps:
- task: AzureCLI@2
name: Config
displayName: Get Config and Generate Variables
inputs:
azureSubscription: '$(Subscription)'
scriptType: bash
scriptLocation: inlineScript
inlineScript: |
Environment="prod"
echo "##vso[task.setvariable variable=Environment;isOutput=true]prod"
echo "##vso[task.setvariable variable=EastName;isOutput=true]$(AppNamePrefix)-$Environment-eastus"
echo "##vso[task.setvariable variable=East2Name;isOutput=true]$(AppNamePrefix)-$Environment-eastus2"
echo "##vso[task.setvariable variable=CentralName;isOutput=true]$(AppNamePrefix)-$Environment-centralus"
echo "##vso[task.setvariable variable=WestName;isOutput=true]$(AppNamePrefix)-$Environment-westus"

我的部署模板如下:

parameters:
- name: artifactName
type: string
default: MyBuildOutputs
- name: appFullName
type: string
- name: condition
type: boolean
default: true
steps:
- task: AzureFunctionApp@1
condition: ${{ parameters.condition }}
displayName: 'Production deploy'
inputs:
azureSubscription: '$(Subscription)'
appType: 'functionApp'
appName: ${{ parameters.appFullName }}
package: '$(System.ArtifactsDirectory)/${{ parameters.artifactName }}/$(Build.BuildId).zip'
deploymentMethod: 'auto'

我的舞台看起来是这样的(去掉了不必要的比特(:

- template: ../../tasks/azure/getConfig.yml
- template: ../../tasks/azure/deployToFA.yml
parameters:
appFullName: $(EastName)

我已经为appFullName: <name>尝试了以下操作:

  • $(EastName)
  • ${{ EastName }}
  • $[ EastName ]
  • $EastName

但是,可悲的是,这些似乎都不起作用,因为它们都是作为文字来的。有办法做到这一点吗?我已经看到了使用dependsOn的方法,但我不希望两个模板之间隐藏的依赖关系(如果可能的话(

但遗憾的是,这些似乎都不起作用,因为它们都被拉入文字。有办法做到这一点吗?我看到了使用dependentsOn,但我不希望两者之间存在隐藏的依赖关系模板(如果可能的话(

抱歉,恐怕目前不支持您的模板结构。您可以选择处理管道:

要将管道转换为运行,Azure管道按以下顺序执行以下几个步骤:首先展开模板并评估模板表达式。

因此,在config template运行AzureCli任务之前,对deploy template中的${{ parameters.appFullName }}进行评估。这就是为什么none of these seem to work as they all get pulled in as literals。根据设计,$(EastName)(运行时变量(在传递给参数时没有任何意义。

作为另一种方法,选中使用变量作为任务输入。它描述了另一种满足您需求的方式。

您的配置模板:

steps:
- task: AzureCLI@2
name: Config
displayName: Get Config and Generate Variables
inputs:
xxx

您的部署模板:

parameters:
- name: artifactName
type: string
default: MyBuildOutputs
- name: appFullName
type: string
- name: condition
type: boolean
default: true
steps:
- task: AzureFunctionApp@1
condition: ${{ parameters.condition }}
displayName: 'Production deploy'
inputs:
azureSubscription: '$(Subscription)'
appType: 'functionApp'
appName: $(Config.EastName) // Changes here. *********  Config is the name of your AzureCLI task.
package: '$(System.ArtifactsDirectory)/${{ parameters.artifactName }}/$(Build.BuildId).zip'
deploymentMethod: 'auto'

您的阶段:

- template: ../../tasks/azure/getConfig.yml
- template: ../../tasks/azure/deployToFA.yml

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新