在大厅工作/任务之间传递参数

时间:2017-05-03 14:28:00

标签: concourse

在大厅任务和工作之间传递参数的最佳方法是什么?例如;如果我的第一个任务生成一个唯一ID,那么将该ID传递给下一个工作或任务的最佳方法是什么?

3 个答案:

答案 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]似乎是一个很好的解决方案。 自述文件描述了数据作为标准属性文件存储和管理。

  1. https://github.com/SWCE/keyval-resource