在大厅任务和作业之间传递参数的最佳方式是什么?例如; 如果我的第一个任务生成一个唯一 ID,那么将该 ID 传递给下一个工作或任务的最佳方法是什么?
问问题
6969 次
3 回答
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 的文件放入 path unique-id/
。有了它,您可以有另一个任务,将唯一 ID 输出作为输入 ( https://concourse-ci.org/running-tasks.html#inputs ) 并使用该唯一 ID 文件。
于 2017-05-03T14:48:40.910 回答
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
于 2017-07-26T16:23:42.910 回答
1
正如 Clara Fu 所指出的,通过输入/输出工件(文件)可以轻松地在作业任务中传递数据。
对于工作之间的情况,当必须传递简单的例如“字符串”数据,并且使用 git 是一种过度杀伤时,“keyval”资源 [1] 似乎是一个很好的解决方案。自述文件描述了数据作为标准属性文件进行存储和管理。
于 2018-02-02T20:29:07.993 回答