concourse - 大厅有效地重用工作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>
解决方案
您可以使用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 管道。
推荐阅读
- javascript - JS async/await:在调用者中捕获而不是尝试/捕获?
- r - 基本的闪亮问题 - 使程序变量反应?
- python - Pip 不再安装包
- asp.net - MonoDevelop - 打开 Visual Studio .Net 项目/解决方案
- elixir - Graphql 查询测试在 Phoenix 中没有正确返回结果
- flask - 'dict' 对象在创建数据源时不支持在 Airflow 中建立索引
- regex - 使用 Regex C# 过滤和搜索
- c# - 使用 SqlBulkCopy 查询
- php - JQuery - PHP Laravel DataTables - 不显示数据
- javascript - ctx.fillRect 不是函数