我有一个模板,它获取一个对象参数和一个用于寻址对象中的值的字符串参数。这里我有不同的方法来打印值:
- name: valueName # the name of the attribute
type: string
- name: secrets # array with secret info data (name, value)
type: object
default: []
jobs:
- ${{each secret in parameters.secrets}}:
- job:
steps:
- script: |
echo "${{ secret['Development'] }}"
- script: |
echo "secret['${{ parameters.valueName}}']"
- script: |
echo "${{ secret['${{ parameters.valueName}}'] }}"
我想要实现的是根据 valueName 参数的值来访问密钥的值。所以该对象可能看起来像这样:
- name: secrets
type: object
default:
- name: 'dbpassword'
Development: 'demokey1'
Staging: 'demokey2'
Production: 'demokey3'
然而,这就是 3 个作业步骤的输出:
echo "demokey1"
echo "secret['Development']"
echo ""
有没有办法通过提供名称作为另一个参数来解析参数值?
如果我理解正确,您将尝试获取作为参数传递的环境的秘密
valueName
:Production
Staging
Development
您可以使用常规变量而不是复杂的参数来简化管道的设计。
第一步是创建一个变量模板:
然后您只需要引用设置参数的变量模板
environment
- 示例管道:在 Azure Pipelines 中,不支持在另一个变量/参数的名称中使用变量/参数。
对于您的情况,您确实喜欢如下示例所示: