2016-12-28 6 views
1

각 태스크가 자신의 컨테이너에서 실행된다는 것을 계속 듣고 있는데, 그 경우 Job2가 입력으로 읽으려는 출력으로 일부 리소스를 생성하는 Job1이있는 경우 (Job 파이프 라이닝의 전형적인 경우) 이렇게 말할 수 있습니다. 컨테이너의 리소스가 각 컨테이너가 자체 컨테이너에서 실행되는 경우 다른 컨테이너에서 사용할 수있는 방법각 작업이 자체 컨테이너에서 실행되는 경우 컨테이너의 리소스를 다른 컨테이너에서 사용할 수있는 방법은 무엇입니까?

또한 하나의 작업에 여러 작업이있는 경우 각 작업이 고유 한 새 컨테이너에서 실행됩니까?

답변

6

각 작업은 실제로 자체 컨테이너에서 실행됩니다. 여기에있는 트릭은 Concourse가 baggageclaim이라는 내부 패키지를 사용하여 개별 태스크 컨테이너의 수명주기를 초과하는 아티팩트 지속성을 유지한다는 것입니다.

작업에 output이 지정되면 해당 출력의 이름이 지정된 (또는 매핑 된) 디렉토리가 일시적인 컨테이너 내부 폴더가 아닌 영구 볼륨으로 마운트됩니다. 해당 디렉토리에 글을 쓸 때 수화물 요청의 내부 작업 공간에 살며 다른 컨테이너에 마운트 할 수 있습니다 (같은 빌드의 나중 작업이 outputinput으로 사용하도록 지정하면 어떻게됩니까?

).

get 단계는 동일한 의미로 이러한 볼륨을 생성하기 때문에 특정 리소스에서 get을 수행 할 때 input으로 이름을 지정하면 리소스의 다운로드 된 비트를 작업의 이후 단계에서 사용할 수 있습니다.

+0

답변 : task1 컨테이너에서 hello로 출력 디렉토리 이름을 지정하고 task2 컨테이너가 task2 컨테이너에서 "hello"디렉토리를 사용할 수있는 위치에 액세스하려고한다고 가정 해 봅시다. – user1870400

+0

일반적으로 출력의 이름을 다음 작업의 입력과 동일한 이름으로 지정해야합니다 (예 : 'hello') 또한 첫 번째 작업에서 쓰는 디렉토리의 이름이어야하고 두 번째 작업에서는 빌드 폴더 (스크립트가 실행되는 곳)와 관련하여 읽어야합니다. https://concourse.ci/single-page.html#input_mapping보다 유연하게하려면 'input-mapping'을 사용할 수 있습니다. – Quintana