Azure Pipelines YAML:带条件作业的循环不生效问题求助
问题:Azure Pipelines YAML条件循环未生成预期作业
你的YAML配置中,循环遍历workloads参数时的条件判断表达式有误,导致无法正确匹配update值生成对应作业。
错误原因
在${{each item in parameters.workloads}}循环中,item是一个键值对对象:item.key对应workload的名称(如wkld001),item.value直接就是对应的操作值(如update)。你写的parameters.workloads[item.key].value是错误写法,不存在这个层级的.value属性,导致条件判断始终不成立,因此只有create_params作业执行。
修正后的配置
parameters: - name: "workloads" type: object default: wkld001: update wkld002: "delete" wkld003: "update" wkld004: "update" wkld005: "update" wkld006: "update" - name: "environment" type: string values: - prd - dev - name: "landing_zone" type: string values: - private - integration stages: - stage: jobs: - job: create_params steps: - powershell: | write-host "test" - ${{each item in parameters.workloads}}: - ${{ if eq(item.value, 'update') }}: - job: "${{item.key}}" dependsOn: create_params steps: - powershell: | write-host "testing loop - ${{item.value}}"
关键修改点
- 将条件判断从
eq(parameters.workloads[item.key].value, 'update')改为eq(item.value, 'update'),直接使用循环变量item的value属性进行判断。
修改后,所有workloads中值为update的条目都会生成对应的作业,且依赖create_params作业执行。后续添加其他条件(如匹配delete)时,只需新增对应的if判断块即可。
内容的提问来源于stack exchange,提问作者Jamie Jonas
相关产品推荐
相关产品推荐

