[英]Have Concourse only build new docker containers on file diff not on commit
所以我有一個從單個git repo構建多個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
任務會占用系統資源的很大一部分,並且在每次提交到主服務器時都會從頭開始重建容器(其中包含的代碼比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
指定要查看的文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.