【发布时间】:2021-12-23 09:46:08
【问题描述】:
我正在尝试构建一个基于参数值执行不同阶段的管道模板:
parameters:
- name: environments
type: object
default: {}
stages:
- template: templates/stage-download-packages.yml
parameters:
dsArtifactFeedName: "${{ parameters.dsArtifactFeedName }}"
azureProjectName: "${{ parameters.azdoProjectName }}"
- ${{ each environment in parameters.environments }}:
${{ if eq(environment.values.isForValidation, 'false') }}:
- template: templates/stage-deploy-to-env.yml
parameters:
ansibleArtifactName: "${{ environment.value.ansibleArtifactName }}"
ansibleArtifactFeedName: "${{ environment.value.ansibleArtifactFeedName }}"
ansibleArtifactVersion: "${{ environment.value.ansibleArtifactVersion }}"
ansibleHostsInventoryFile: "${{ environment.value.ansibleHostsInventoryFile }}"
ansiblePlaybookFile: "${{ environment.value.ansiblePlaybookFile }}"
buildNumber: "${{ environment.value.buildNumber }}"
env: "${{ environment.key }}"
envLong: "${{ environment.value.displayName }}"
hostFromInventory: "${{ environment.value.ansibleHostFromInventory }}"
keyVaultConnection: "${{ environment.value.keyVaultConnection }}"
keyVaultName: "${{ environment.value.keyVaultName }}"
updateAzVaults: true
${{ if eq(environment.values.isForValidation, 'true') }}:
- stage: "${{ environment.key }}"
displayName: "${{ environment.value.displayName }}"
jobs:
- deployment:
environment: "${{ environment.key }}"
在当前情况下,检查isForValidation 值的 if 语句会抛出异常:
Encountered error(s) while parsing pipeline YAML:
Object reference not set to an instance of an object.
我们如何对循环的当前项使用 if 条件?
【问题讨论】:
标签: azure-devops azure-pipelines