簡體   English   中英

讓Concourse僅在文件diff上構建新的docker容器而不是在提交時構建

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM