在大厅作业/任务之间传递参数
Passing parameters between concourse jobs / tasks
在 concourse 任务和作业之间传递参数的最佳方式是什么?例如;如果我的第一个任务生成一个唯一 ID,将该 ID 传递给下一个作业或任务的最佳方式是什么?
如果您只是在同一作业中的任务之间传递,则可以使用工件 (https://concourse-ci.org/running-tasks.html#outputs),如果您在作业之间传递,则可以使用资源(例如将其放入 git或 s3).例如,如果你在任务之间传递,你可以有一个任务文件
---
platform: linux
image_resource: # ...
outputs:
- name: unique-id
run:
path: project-src/ci/fill-in-output.sh
脚本fill-in-output.sh
会将包含唯一ID的文件放入路径unique-id/
。这样,您就可以执行另一个任务,将唯一 ID 输出作为输入 (https://concourse-ci.org/running-tasks.html#inputs) 并使用该唯一 ID 文件。
除了任务之外,资源还会自动为您将文件放置在它们的工作目录中。
例如我有一个管道作业如下
jobs:
- name: build
plan:
- get: git-some-repo
- put: push-some-image
params:
build: git-some-repo/the-image
- task: Use-the-image-details
config:
platform: linux
image_resource:
type: docker-image
source:
repository: alpine
inputs:
- name: push-some-image
run:
path: sh
args:
- -exc
- |
ls -lrt push-some-image
cat push-some-image/repository
cat push-some-image/digest
详情请看push-some-image
的图片推送
+ cat push-some-image/repository
xxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com/path/image
+ cat push-some-image/digest
sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
正如 Clara Fu 指出的那样,可以使用 input/output 工件(文件)轻松完成作业任务中的数据传递。
对于作业之间的情况,当简单时,例如'string' 数据必须被传递,使用 git 是一种矫枉过正,'keyval' 资源 [1] 似乎是一个很好的解决方案。
自述文件描述数据作为标准属性文件存储和管理。
在 concourse 任务和作业之间传递参数的最佳方式是什么?例如;如果我的第一个任务生成一个唯一 ID,将该 ID 传递给下一个作业或任务的最佳方式是什么?
如果您只是在同一作业中的任务之间传递,则可以使用工件 (https://concourse-ci.org/running-tasks.html#outputs),如果您在作业之间传递,则可以使用资源(例如将其放入 git或 s3).例如,如果你在任务之间传递,你可以有一个任务文件
---
platform: linux
image_resource: # ...
outputs:
- name: unique-id
run:
path: project-src/ci/fill-in-output.sh
脚本fill-in-output.sh
会将包含唯一ID的文件放入路径unique-id/
。这样,您就可以执行另一个任务,将唯一 ID 输出作为输入 (https://concourse-ci.org/running-tasks.html#inputs) 并使用该唯一 ID 文件。
除了任务之外,资源还会自动为您将文件放置在它们的工作目录中。
例如我有一个管道作业如下
jobs:
- name: build
plan:
- get: git-some-repo
- put: push-some-image
params:
build: git-some-repo/the-image
- task: Use-the-image-details
config:
platform: linux
image_resource:
type: docker-image
source:
repository: alpine
inputs:
- name: push-some-image
run:
path: sh
args:
- -exc
- |
ls -lrt push-some-image
cat push-some-image/repository
cat push-some-image/digest
详情请看push-some-image
+ cat push-some-image/repository
xxxxxxxxx.dkr.ecr.eu-west-1.amazonaws.com/path/image
+ cat push-some-image/digest
sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
正如 Clara Fu 指出的那样,可以使用 input/output 工件(文件)轻松完成作业任务中的数据传递。
对于作业之间的情况,当简单时,例如'string' 数据必须被传递,使用 git 是一种矫枉过正,'keyval' 资源 [1] 似乎是一个很好的解决方案。 自述文件描述数据作为标准属性文件存储和管理。