2016-11-16 6 views
1

그래서 단일 git repo에서 여러 도커 컨테이너를 빌드하는 파이프 라인이 있습니다. 그것은 다음과 같은 :Concourse는 커밋시 diff에서 새로운 도커 컨테이너 만 생성합니다.

--- 
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 작업을 실행하는 단지보다 더 많은 코드를 포함하는 마스터 (에 커밋 시스템 자원의 상당 부분을 차지하고 각각에 처음부터 컨테이너를 재건이라는 것이다 도커 컨테이너).

이 작업을 대신 컨테이너를 작성하는 데 사용 된 이전 및 새 파일을 비교하고 파일에 diff가있는 경우에만 컨테이너를 다시 작성합니다.

참고 : 파일을 다른 repos로 분리하는 것은 피하고 싶은 옵션입니다.

답변

3
자원에만 REPO의 특정 파일을 변경하여 빌드 새로운 트리거하도록 구성 할 수 있습니다

:

- 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> 
2

경우 킨의 대답은 완전히 명확하지 않다, 아이디어는 여러 망할 놈의 자원을 정의 할 수있는 동일한 Git 저장소를 가리킨다. 각 리소스는 paths/ignore_paths을 사용하여 볼 파일을 지정할 수 있습니다.

+0

네, 실제로 그 일을 끝내기까지했습니다. 동일한 repo의 여러 git 리소스를 생성합니다. 각각의 경로는 서로 다릅니다. –

+0

우수! 나는 그것이 당신을 위해 잘 된 것을 기쁘게 생각합니다. – mkb