有Concourse只build立新的docker容器文件差异不提交

所以我有一个pipe道,从一个单一的git仓库build立多个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集装箱)上从头开始重新构build容器。

我想做这些任务,而不是比较用于构build容器的新旧文件,只有在文件中有差异时才重build容器。

注意:将文件分成不同的回购是一个我想避免的选项。

您的资源可以被configuration为触发新的版本,只有修改了特定的文件在回购:

 - 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来指定要查看的ignore_paths