Azure Pipeline each循环添加azureSubscription遇参数错误,求解决方案
正确配置方法
你遇到的问题有两个核心原因:
- 普通
script步骤不支持azureSubscription输入参数,需使用专门的Azure CLI任务关联订阅 - 原配置中
each循环的遍历对象和变量引用有误
修正后的完整YAML配置
parameters: - name: infoList displayName: 信息列表 type: object # 改为数组类型,支持多个信息项循环 default: - info1: abc info2: 123 info3: hello - info1: def info2: 456 info3: world steps: - checkout: none # 遍历每个信息对象 - ${{ each item in parameters.infoList }}: # 使用Azure CLI任务替代script,支持azureSubscription参数 - task: AzureCLI@2 displayName: 配置密钥Vault - ${{ item.info1 }} inputs: # 指定你的Azure服务连接名称 azureSubscription: 'subscriptionNumber' # 选择Azure CLI版本 scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | echo "info1 is ${{ item.info1 }}" echo "info2 is ${{ item.info2 }}" echo "info3 is ${{ item.info3 }}" az keyvault secret set --vault-name ${{ item.info1 }} --name ${{ item.info2 }} --value ${{ item.info3 }}
关键说明
- 替换任务类型:用
AzureCLI@2任务代替普通script,该任务是微软官方提供的专用任务,支持通过azureSubscription参数关联已配置的Azure服务连接。 - 修正参数结构:把原
info参数改为数组类型infoList,确保each循环能遍历多个信息对象;若仅需单个对象,可直接去掉循环使用参数值。 - 变量引用修正:循环中用
${{ item.info1 }}引用当前对象的属性,原配置中${{ info.info1 }}写法错误——遍历单个对象的属性时,info是键值对(key为info1,value为abc),无法直接访问info1属性。 - 缩进规范:YAML对缩进要求严格,需确保
inputs、inlineScript等层级对齐。
如果你的info参数仅需单个对象(无需循环),可简化为:
parameters: - name: info displayName: 信息 type: object default: info1: abc info2: 123 info3: hello steps: - checkout: none - task: AzureCLI@2 displayName: 配置密钥Vault inputs: azureSubscription: 'subscriptionNumber' scriptType: 'bash' scriptLocation: 'inlineScript' inlineScript: | echo "info1 is ${{ parameters.info.info1 }}" echo "info2 is ${{ parameters.info.info2 }}" echo "info3 is ${{ parameters.info.info3 }}" az keyvault secret set --vault-name ${{ parameters.info.info1 }} --name ${{ parameters.info.info2 }} --value ${{ parameters.info.info3 }}
内容的提问来源于stack exchange,提问作者eliew
相关产品推荐
相关产品推荐

