首页 > 解决方案 > 大厅有效地重用工作remplates

问题描述

我有以下一段代码

job-template: &job-template
plan:
- get: project-x.git
trigger: true
- task: t1
config:
platform: linux
image_resource:
type: docker-image
source: {repository: alpine}
run:
path: echo
args: [“Hello, world!”]

###############################################################################

resources:

name: project-x.git
type: git
source:
uri: https://github.com/marco-m/concourse-pipelines.git
branch: master
###############################################################################

jobs:

name: j1
<<: *job-template
name: j2
<<: *job-template
name: j3
<<: *job-template
name: j4
<<: *job-template
name: j5
<<: *job-template

而不是所有打印“Hello,World!”的作业 ,我想将一个字符串变量从 Job 传递给 Job 模板,以便每个作业的打印方式不同。“你好世界!我来自 j1” “你好,世界!我来自 j2”</p>

标签: concourse

解决方案


您可以使用params节,它将键/值对作为环境变量提供给任务。类似于以下内容:

config-template: &config-template
  config:
    platform: linux
    image_resource:
      type: registry-image
      source: {repository: alpine}
    params:
      NAME: world
    run:
      path: sh
      args:
        - -ce
        - echo "Hello, $NAME!"

jobs:
- name: j1
  plan:
  - task: t1
    params:
      NAME: A
    <<: *config-template
- name: j2
  plan:
  - task: t2
    params:
      NAME: B
    <<: *config-template
- name: j3
  plan:
  - task: t3
    params:
      NAME: C
    <<: *config-template

但相反,我会使用单独的任务文件

顺便说一句,由于您使用的是marco-m/concourse-pipelines中的一个示例,我建议您查看我的另一个项目marco-m/concourse-in-a-box:一个一体化的 Concourse基于 Docker Compose 的 CI/CD 系统,具有与 Minio S3 兼容的存储和 HashiCorp Vault 机密管理器。这样可以在简单而完整的环境中从头开始学习 Concourse 管道。


推荐阅读