【问题标题】:Specify runtime parameter in a pipeline task在管道任务中指定运行时参数
【发布时间】:2019-11-13 09:11:40
【问题描述】:

我们需要以某种方式将动态运行时参数传递给管道任务。 例如,对于任务的每次运行,下面的参数 APPROVAL 会有所不同。 此 APPROVAL 参数用于更改和发布编号,以便任务可以在为审计目的创建的 terraform 资源上对其进行标记。

在网上搜索了一段时间,但没有找到解决方案,这是否可以在大厅管道或最佳实践中实现?

  - task: plan-terraform
    file: ci/concourse-jobs/pipelines/tasks/terraform/plan-terraform.yaml
    params:
      ENV: dev
      APPROVAL: test
      CHANNEL: Developement
      GITLAB_KEY: ((gitlab_key))
      REGION: eu-west-2
      TF_FOLDER: terraform/squid
    input_mapping:
      ci: ci
      tf: squid
    output_mapping:
      plan: plan
    tags:
    - dev

【问题讨论】:

    标签: concourse concourse-pipeline


    【解决方案1】:

    来自https://concourse-ci.org/tasks.html: 理想情况下,任务是纯函数:给定相同的输入集,它应该总是以相同的输出成功或总是失败。

    动态参数会破坏该契约并从同一组输入中产生不同的输出。您能否将 APPROVAL 作为输入?然后,您将维护您的构建可追溯性。如果是(文件)输入,则可以将其加载到变量中:

    APPROVAL=$(cat <filename>)
    

    【讨论】:

    • 有趣的想法是将发布任务包含在一个文件中,这意味着为每个发布环境剪切一个新标签,但猜测批准文件可能来自另一个仓库。
    • 我们也有类似的要求,但通过 ServiceNow 管理审批。我们要求部署工件中包含更改编号,我们的大厅作业会联系 ServiceNow API 进行验证。在您的情况下,一个单独的存储库包含批准编号(可能还有已批准内容的提交 SHA),有助于审核,因为批准提交本身将包含批准更改的人员以及他们打算批准的内容。
    猜你喜欢
    • 2021-10-24
    • 1970-01-01
    • 2020-03-20
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    相关资源
    最近更新 更多