如何在Azure管道中使用each表达式连接bash脚本
我有几个地方需要在不同阶段的部署期间定义一组K8s机密,因此我想将重复脚本提取到模板中:如何在Azure管道中使用each表达式连接bash脚本,bash,kubernetes,azure-devops,yaml,azure-pipelines,Bash,Kubernetes,Azure Devops,Yaml,Azure Pipelines,我有几个地方需要在不同阶段的部署期间定义一组K8s机密,因此我想将重复脚本提取到模板中: parameters: - name: secretName type: string default: "" - name: secrets type: object default: Foo: Bar steps: - task: Bash@3 displayName: Create generic secret ${
parameters:
- name: secretName
type: string
default: ""
- name: secrets
type: object
default:
Foo: Bar
steps:
- task: Bash@3
displayName: Create generic secret ${{ parameters.secretName }}
inputs:
targetType: inline
script: |
echo "Creating generic secret ${{ parameters.secretName }}"
microk8s kubectl delete secret ${{ parameters.secretName }}
microk8s kubectl create secret generic ${{ parameters.secretName }} ${{ each secret in parameters.secrets }}: --from-literal=${{ secretKey }}="${{ secret.value }}"
我想多次这样称呼它,为每个阶段的部署创建所有必要的秘密
-作业:创建机密
游泳池:
名称:$(池名称)
步骤:
-模板:“模板/模板创建机密.yml”
参数:
secretName:“testSecret”
秘密:
用户名:$(临时用户)
密码:$(登台密码)
foo:$(巴)
它应该简单地执行一个与此类似的脚本:
kubectl创建机密通用secretName\
--from literal=username=user1\
--from literal=password=pass1\
--…等等
根据我目前的方法,我收到了错误:
/代码/BuildScripts/Templates/template-create-secret.yml(第18行,
Col:15):在此上下文中不允许使用指令“each”。
嵌入到中的表达式不支持指令
一串。仅当整个值为
表情
如何迭代object类型的参数并使用其键和值为bash构建字符串?另一种方法是简单地为每个秘密使用一个键值对,并创建多个秘密,我希望避免这种情况。根据doc:,我们可以知道我们需要在脚本之前使用“each”关键字,这是帮助您了解更多有关密码的doc。以下是演示脚本:
parameters:
- name: listOfStrings
type: object
default:
- one
- two
steps:
- ${{ each value in parameters.listOfStrings }}:
- script: echo ${{ value }}
不幸的是,这没有回答我的问题。