让 Concourse 仅在文件 diff 而不是提交时构建新的 docker 容器
Have Concourse only build new docker containers on file diff not on commit
所以我有一个从单个 git 存储库构建多个 docker 容器的管道。它看起来像这样:
---
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_groups:
- serial_lock
plan:
- get: resource-docker
serial: true
- put: first-container
params:
build: resource-docker/first-container-path
- name: second-container-image-update
public: true
serial_groups:
- serial_lock
plan:
- get: resource-docker
serial: true
- put: second-container
params:
build: resource-docker/second-container-path
问题是 运行 resource-docker
任务占用了很大一部分系统资源,并在每次提交给 master 时从头开始重建容器(其中包含的代码不仅仅是docker 个容器)。
我想执行这些任务,而不是比较用于构建容器的新旧文件,并且仅在文件中存在差异时才重建容器。
注意:我想避免将文件分成不同的存储库。
您的资源可以配置为仅在对存储库中的特定文件进行更改时触发新构建:
- name: resource-docker
type: git
source:
uri: https://github.com/$MYUSER/$MYREPO.git
branch: master
paths:
- <path/to/Dockerfile/or/whatever>
- <path/to/other/triggering/diffs>
如果 Quintana 的回答不是很清楚,我们的想法是您可以定义多个 Git 指向同一个 Git 存储库的资源。每个资源都可以使用 paths
/ ignore_paths
来指定要查看的文件。
所以我有一个从单个 git 存储库构建多个 docker 容器的管道。它看起来像这样:
---
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_groups:
- serial_lock
plan:
- get: resource-docker
serial: true
- put: first-container
params:
build: resource-docker/first-container-path
- name: second-container-image-update
public: true
serial_groups:
- serial_lock
plan:
- get: resource-docker
serial: true
- put: second-container
params:
build: resource-docker/second-container-path
问题是 运行 resource-docker
任务占用了很大一部分系统资源,并在每次提交给 master 时从头开始重建容器(其中包含的代码不仅仅是docker 个容器)。
我想执行这些任务,而不是比较用于构建容器的新旧文件,并且仅在文件中存在差异时才重建容器。
注意:我想避免将文件分成不同的存储库。
您的资源可以配置为仅在对存储库中的特定文件进行更改时触发新构建:
- name: resource-docker
type: git
source:
uri: https://github.com/$MYUSER/$MYREPO.git
branch: master
paths:
- <path/to/Dockerfile/or/whatever>
- <path/to/other/triggering/diffs>
如果 Quintana 的回答不是很清楚,我们的想法是您可以定义多个 Git 指向同一个 Git 存储库的资源。每个资源都可以使用 paths
/ ignore_paths
来指定要查看的文件。