在大厅任务和工作之间传递参数的最佳方法是什么?例如;如果我的第一个任务生成一个唯一ID,那么将该ID传递给下一个工作或任务的最佳方法是什么?
答案 0 :(得分:5)
如果您只是在同一作业中的任务之间传递,则可以使用工件(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文件。
答案 1 :(得分:1)
此外,任务资源会自动为您的工作目录中的文件。
例如,我有一个管道工作如下
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
答案 2 :(得分:0)
使用输入/输出工件(文件)可以轻松地在作业中传递数据,正如Clara Fu指出的那样。
对于工作之间的情况,当简单时,例如'串'必须传递数据,并且使用git是一种过度杀伤,关键词是'资源[1]似乎是一个很好的解决方案。 自述文件描述了数据作为标准属性文件存储和管理。