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 CI/CD Job 실패 이유 | 인포그랩 GitLab

GitLab 10.8 이상에서는 Job 상세 페이지에서 실패 이유를 확인할 수도 있습니다.

파이프라인의 Job 순서

파이프라인의 Job 순서는 파이프라인 그래프 유형에 따라 다릅니다.

  • 일반 파이프라인 그래프의 경우, Job은 이름으로 정렬됩니다.
  • 파이프라인 미니 그래프의 경우, Job은 심각도에 의해 정렬된 다음, 이름으로 정렬됩니다.

심각도의 순서는 다음과 같습니다.

  • failed
  • warning
  • pending
  • running
  • manual
  • scheduled
  • canceled
  • success
  • skipped
  • created

예를 들면 :

GitLab CI/CD Jobs 정렬 예시 | 인포그랩 GitLab

파이프라인의 Job 그룹화

유사한 Job이 많은 경우 파이프라인 그래프가 길어지고 읽기 어려워집니다. 유사한 Job을 자동으로 그룹화할 수 있습니다. Job 이름이 특정 방식으로 형식화되면, 일반 파이프라인 그래프(미니 그래프가 아님)에서 단일 그룹으로 축소됩니다. 파이프라인 내부에 재시도 또는 취소 버튼이 표시되지 않으면 파이프라인이 언제 Job을 그룹화했는지 알 수 있습니다. 마우스를 가져가면 그룹화된 Job의 수가 표시됩니다. 확장하려면 클릭하십시오.

GitLab CI/CD Jobs 그룹화 확인 | 인포그랩 GitLab

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라는 그룹이 생성됩니다.

GitLab CI/CD Jobs 그룹 | 인포그랩 GitLab

Job은 왼쪽에서 오른쪽으로 숫자를 비교하여 정렬됩니다. 일반적으로 첫 번째 숫자가 인덱스가 되고 두 번째 숫자가 합계가 되기를 원합니다.

이 정규식은 Job 이름을 평가합니다. : \d+[\s:\/\\]+\d+\s*

수동 Job 실행 시 변수 지정

수동 Job을 실행할 때 추가 Job별 변수를 제공할 수 있습니다.

추가 변수를 사용하여 실행하려는 수동 Job의 Job 페이지에서 이를 수행할 수 있습니다. 이 페이지에 액세스하려면, 재생 버튼이 아닌 파이프라인 뷰에서 수동 Job의 이름을 클릭합니다.

이것은 커스텀 환경 변수를 사용하는 Job의 실행을 변경하려는 경우에 유용합니다. 수동 Job의 단일 실행에 대해 UI 또는 .gitlab-ci.yml에 정의된 값을 재정의하려면 여기에 변수 이름(key) 및 값을 추가합니다.

GitLab CI/CD Job 재정의 | 인포그랩 GitLab

Job 지연

Job을 즉시 실행하지 않으려면, when:delayed 키워드를 사용하여 특정 기간 동안 Job 실행을 지연시킬 수 있습니다.

이는 새로운 코드가 점진적으로 롤아웃되는 시간이 지정된 증분 롤아웃(rollout)에 특히 유용합니다.

예를 들어, 새 코드를 롤아웃하기 시작하고 다음을 수행하는 경우 :

  • 사용자는 문제를 경험하지 않으며 GitLab은 0 %에서 100 %까지 자동으로 배포를 완료할 수 있습니다.
  • 사용자가 새 코드에 문제를 경험하면 파이프라인을 취소하고 마지막 안정 버전으로 롤백하여 시간이 지정된 증분 롤아웃을 중지할 수 있습니다.
GitLab CI/CD Job 롤백하기 | 인포그랩 GitLab

Job 로그 섹션 확장 및 축소

Job 로그는 축소하거나 확장할 수 있는 섹션으로 나뉩니다. 각 섹션에는 지속기간이 표시됩니다.

다음 예에서 :

  • 두 섹션이 접혀 있고 확장될 수 있습니다.
  • 세 섹션이 확장되어 있고 축소될 수 있습니다.
GitLab CI/CD Job 로그 섹션 예시 | 인포그랩 GitLab

커스텀 접을 수 있는 섹션

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[0Ks

업데이트된 섹션 시작 텍스트를 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"
GitLab 원문 보기