CI/CD Jobs
파이프라인 구성은 Job으로 시작됩니다. Job은 .gitlab-ci.yml
파일의 가장 기본적인 요소입니다.
Job은 :
- 어떤 조건에서 실행되어야 하는지를 명시하는 제약 조건으로 정의됩니다.
- 임의의 이름을 가진 최상위 요소이며 최소한 script 절을 포함해야 합니다.
- 정의할 수 있는 수에는 제한이 없습니다.
예를 들면 :
job1:
script: "execute-script-for-job1"
job2:
script: "execute-script-for-job2"
위의 예는 각 Job이 서로 다른 명령을 실행하는 두 개의 개별 Job이 있는 가장 간단한 CI/CD 구성입니다. 물론 명령은 코드를 직접 실행하거나(./configure;make;make install
) 리포지터리에서 스크립트(test.sh
)를 실행할 수 있습니다.
Job은 러너에 의해 선택되고 러너 환경 내에서 실행됩니다. 중요한 것은 각 Job이 서로 독립적으로 실행된다는 것입니다.
파이프라인에서 Job 보기
파이프라인에 액세스하면 해당 파이프라인에 대한 관련 Job을 볼 수 있습니다.
개별 Job을 클릭하면 Job 로그가 표시되며 다음을 수행할 수 있습니다.
- Job 취소
- Job 재시도
- Job 로그 지우기
Job이 실패한 이유 보기
파이프라인이 실패하거나 실패할 수 있는 경우, 원인을 찾을 수 있는 곳은 몇 군데 있습니다.
- 파이프라인 상세 뷰의 파이프라인 그래프에서
- 병합 요청 및 커밋 페이지의 파이프라인 위젯에서
- Job의 글로벌 및 상세 뷰의 Job 뷰에서
각 위치에서 실패한 Job 위로 마우스를 가져가면 실패한 이유를 볼 수 있습니다.
GitLab 10.8 이상에서는 Job 상세 페이지에서 실패 이유를 확인할 수도 있습니다.
파이프라인의 Job 순서
파이프라인의 Job 순서는 파이프라인 그래프 유형에 따라 다릅니다.
- 일반 파이프라인 그래프의 경우, Job은 이름으로 정렬됩니다.
- 파이프라인 미니 그래프의 경우, Job은 심각도에 의해 정렬된 다음, 이름으로 정렬됩니다.
심각도의 순서는 다음과 같습니다.
- failed
- warning
- pending
- running
- manual
- scheduled
- canceled
- success
- skipped
- created
예를 들면 :
파이프라인의 Job 그룹화
유사한 Job이 많은 경우 파이프라인 그래프가 길어지고 읽기 어려워집니다. 유사한 Job을 자동으로 그룹화할 수 있습니다. Job 이름이 특정 방식으로 형식화되면, 일반 파이프라인 그래프(미니 그래프가 아님)에서 단일 그룹으로 축소됩니다. 파이프라인 내부에 재시도 또는 취소 버튼이 표시되지 않으면 파이프라인이 언제 Job을 그룹화했는지 알 수 있습니다. 마우스를 가져가면 그룹화된 Job의 수가 표시됩니다. 확장하려면 클릭하십시오.
Job 그룹을 만들려면 CI/CD 파이프라인 구성 파일에서 각 Job 이름을 숫자와 다음 중 하나로 구분합니다.
- 슬래시(/), 예 : test 1/3, test 2/3, test 3/3
- 콜론(:), 예 : test 1:3, test 2:3, test 3:3
- 공백, 예 : test 0 3, test 1 3, test 2 3
이러한 기호는 서로 바꿔서 사용할 수 있습니다.
아래 예에서, 이 세 가지 Job은 build ruby라는 이름의 그룹에 있습니다.
build ruby 1/3:
stage: build
script:
- echo "ruby1"
build ruby 2/3:
stage: build
script:
- echo "ruby2"
build ruby 3/3:
stage: build
script:
- echo "ruby3"
파이프라인에서, 그 결과 세 가지 Job이 있는 build ruby라는 그룹이 생성됩니다.
Job은 왼쪽에서 오른쪽으로 숫자를 비교하여 정렬됩니다. 일반적으로 첫 번째 숫자가 인덱스가 되고 두 번째 숫자가 합계가 되기를 원합니다.
이 정규식은 Job 이름을 평가합니다. : \d+[\s:\/\\]+\d+\s*
수동 Job 실행 시 변수 지정
수동 Job을 실행할 때 추가 Job별 변수를 제공할 수 있습니다.
추가 변수를 사용하여 실행하려는 수동 Job의 Job 페이지에서 이를 수행할 수 있습니다. 이 페이지에 액세스하려면, 재생 버튼이 아닌 파이프라인 뷰에서 수동 Job의 이름을 클릭합니다.
이것은 커스텀 환경 변수를 사용하는 Job의 실행을 변경하려는 경우에 유용합니다. 수동 Job의 단일 실행에 대해 UI 또는 .gitlab-ci.yml
에 정의된 값을 재정의하려면 여기에 변수 이름(key) 및 값을 추가합니다.
Job 지연
Job을 즉시 실행하지 않으려면, when:delayed
키워드를 사용하여 특정 기간 동안 Job 실행을 지연시킬 수 있습니다.
이는 새로운 코드가 점진적으로 롤아웃되는 시간이 지정된 증분 롤아웃(rollout)에 특히 유용합니다.
예를 들어, 새 코드를 롤아웃하기 시작하고 다음을 수행하는 경우 :
- 사용자는 문제를 경험하지 않으며 GitLab은 0 %에서 100 %까지 자동으로 배포를 완료할 수 있습니다.
- 사용자가 새 코드에 문제를 경험하면 파이프라인을 취소하고 마지막 안정 버전으로 롤백하여 시간이 지정된 증분 롤아웃을 중지할 수 있습니다.
Job 로그 섹션 확장 및 축소
Job 로그는 축소하거나 확장할 수 있는 섹션으로 나뉩니다. 각 섹션에는 지속기간이 표시됩니다.
다음 예에서 :
- 두 섹션이 접혀 있고 확장될 수 있습니다.
- 세 섹션이 확장되어 있고 축소될 수 있습니다.
커스텀 접을 수 있는 섹션
GitLab이 축소할 섹션을 결정하는 데 사용하는 특수 코드를 수동으로 출력하여 Job 로그 에 축소 가능한 섹션을 만들 수 있습니다.
- 섹션 시작 마커 :
section_start:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K + TEXT_OF_SECTION_HEADER
- 섹션 끝 마커 :
section_end:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K
이러한 코드를 CI 구성의 스크립트 섹션에 추가해야 합니다. 예를 들어, echo
를 사용하면 :
job1:
script:
- echo -e "section_start:`date +%s`:my_first_section\r\e[0KHeader of the 1st collapsible section"
- echo 'this line should be hidden when collapsed'
- echo -e "section_end:`date +%s`:my_first_section\r\e[0K"
위의 예에서 :
date +%s
: Unix 타임스탬프 (예 : 1560896352)my_first_section
: 섹션에 지정된 이름\r\e[0K
: 섹션 마커가 렌더링된(색상) Job 로그에 표시되지 않도록 하지만 원시 Job 로그에는 표시됩니다. 이를 보려면 Job 로그의 오른쪽 상단에서, Show complete raw 아이콘을 클릭합니다.\r
: 캐리지 리턴\e[0K
: 명확한 라인 ANSI 이스케이프 코드
원시 Job 로그 샘플 :
section_start:1560896352:my_first_section\r\e[0KHeader of the 1st collapsible section
this line should be hidden when collapsed
section_end:1560896353:my_first_section\r\e[0K
사전 축소 섹션
collapsed
옵션을 섹션 시작에 추가하여 Job 로그가 접을 수 있는 섹션을 자동으로 접도록 할 수 있습니다. 섹션 이름 뒤와 \r
앞에 [collapsed=true]
를 추가합니다. 섹션 끝 마커는 변경하지 않습니다.
[collapsed=true]
가 있는 섹션 시작 마커 :section_start:UNIX_TIMESTAMP:SECTION_NAME[collapsed=true]\r\e[0K
+TEXT_OF_SECTION_HEADER
- 섹션 끝 마커 :
section_end:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K
s
업데이트된 섹션 시작 텍스트를 CI 구성에 추가합니다. 예를 들어, echo
를 사용하면 :
job1:
script:
- echo -e "section_start:`date +%s`:my_first_section[collapsed=true]\r\e[0KHeader of the 1st collapsible section"
- echo 'this line should be hidden automatically after loading the job log'
- echo -e "section_end:`date +%s`:my_first_section\r\e[0K"
⚠️ 사전 동의 없이 2차 가공 및 영리적인 이용을 금하며, 온·오프라인에 무단 전재 또는 유포할 수 없습니다.