【问题标题】:How to use an each expression to concatenate a bash script in Azure Pipelines如何使用 each 表达式连接 Azure Pipelines 中的 bash 脚本
【发布时间】:2021-06-25 10:37:32
【问题描述】:

我有几个地方,需要在部署的各个阶段定义一组K8s 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 }}" 

我想多次这样调用它,为每个阶段的部署创建所有必要的秘密

- job: CreateSecrets
  pool:
    name: $(poolName)
  steps:
    - template: "Templates/template-create-secret.yml"
      parameters:
        secretName: "testSecret"
        secrets:
          username: $(staging-user)
          password: $(staging-password)
          foo: $(bar)

它应该简单地执行一个类似于这个的脚本:

kubectl create secret generic secretName \
  -- from-literal=username=user1 \
  -- from-literal=password=pass1 \
  -- ...etc 

使用我目前的方法,我收到了错误:

/Code/BuildScripts/Templates/template-create-secret.yml(第 18 行, Col: 15): 在此上下文中不允许使用指令“每个”。 内嵌的表达式不支持指令 一个字符串。仅当整个值为 表达。

如何迭代对象类型的参数并使用它的键和值来为 bash 构建字符串?另一种方法是简单地为每个秘密使用一个键值对并创建多个秘密,我想避免这种情况

【问题讨论】:

    标签: bash kubernetes azure-devops yaml azure-pipelines


    【解决方案1】:

    根据文档:Parameter data types,我们可以知道我们需要在脚本之前使用“每个”关键字,这里是帮助您了解更多关于Runtime parameters 的文档。这是演示脚本:

    parameters:
    - name: listOfStrings
      type: object
      default:
      - one
      - two
    
    steps:
    - ${{ each value in parameters.listOfStrings }}:
      - script: echo ${{ value }}
    

    【讨论】:

    • 很遗憾,这并没有回答我的问题。
    • 这只会产生很多单行任务 - OP 正在寻求一种方法来构建单个脚本,然后可以在一个任务中执行。我现在正在寻找同样的东西
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-23
    • 2019-11-16
    • 1970-01-01
    • 2013-06-06
    • 2011-11-01
    相关资源
    最近更新 更多