如何为重复的资源和工作创建场所循环?

Ale*_*hen 5 git continuous-integration docker concourse

现在,我有一个Concourse管道脚本,可以从git repo更新dockerhub图像。我是根据以下教程创建的。我在这个git repo中有几个docker容器,我希望能够遍历它们,为每个不同的容器重复docker-image资源和image-update工作,以使我的脚本更加整洁和可读。这是我当前的脚本:

---
resources:
- name: resource-docker
  type: git
  source:
    uri: https://github.com/$MYUSER/$MYREPO.git
    branch: master

# docker-image resources
- name: first-container
  type: docker-image
  source:
    repository: $MYUSER/first-container

- name: second-container
  type: docker-image
  source:
    repository: $MYUSER/second-container

jobs:
# image-update jobs
- name: first-container-image-update
  public: true
  serial: true
  plan:
  - get: resource-docker
  - put: first-container
    params:
      build: resource-docker/first-container

- name: second-container-image-update
  public: true
  serial: true
  plan:
  - get: resource-docker
  - put: second-container
    params:
      build: resource-docker/second-container
Run Code Online (Sandbox Code Playgroud)

如何更改此设置,以便仅创建一个docker-image资源和image-update一份工作?

Eng*_*_DJ 5

你不能,因为这不是 Concourse 的真正运作方式。

Concourse 完全是声明式的、幂等的、可重复的和可再现的。因此,使配置成为程序的想法并不是该工具真正支持的。配置应该设置一次,存储在版本控制下,然后是不可变的。

您可以首先自动生成管道 YAML 文件,或者编写一个新资源,将每个 Docker 镜像报告为新“版本”以通过单个管道 - 这与 GitHub Pull Requests 资源的方式类似作品。