InfoGrab Docs

CI/CD job 로그

요약

job 로그는 CI/CD job의 전체 실행 기록을 표시합니다. job 및 해당 로그 출력에 대한 자세한 정보를 보려면 job 로그 페이지를 스크롤합니다. Show full screen을 클릭하여 전체 화면 모드로 job 로그 내용을 볼 수 있습니다.

job 로그는 CI/CD job의 전체 실행 기록을 표시합니다.

job 로그 보기#

job 로그를 보려면:

  1. job 로그를 보려는 프로젝트를 선택합니다.
  2. 왼쪽 사이드바에서 CI/CD > Pipelines를 선택합니다.
  3. 검사할 파이프라인을 선택합니다.
  4. 파이프라인 보기에서 job 목록에서 job 로그 페이지를 보려는 job을 선택합니다.

job 및 해당 로그 출력에 대한 자세한 정보를 보려면 job 로그 페이지를 스크롤합니다.

전체 화면 모드로 job 로그 보기#

히스토리
  • GitLab 16.7에서 도입되었습니다.

Show full screen을 클릭하여 전체 화면 모드로 job 로그 내용을 볼 수 있습니다.

전체 화면 모드를 사용하려면 웹 브라우저도 이를 지원해야 합니다. 웹 브라우저가 전체 화면 모드를 지원하지 않으면 옵션이 제공되지 않습니다.

job 로그 섹션 펼치기 및 접기#

히스토리
  • bash 셸에서 멀티라인 명령어 출력이 GitLab 16.5에서 FF_SCRIPT_SECTIONS라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.

이 기능의 가용성은 기능 플래그로 제어됩니다. 자세한 내용은 기록을 참조하세요.

FF_SCRIPT_SECTIONS가 활성화되면 멀티라인 스크립트 명령어가 job 로그에서 접기 가능한 섹션으로 표시됩니다. 싱글라인 명령어는 $ 접두사와 함께 직접 출력됩니다. 소요 시간은 표시되지 않습니다.

powershellpwsh 셸에서는 FF_SCRIPT_SECTIONS가 접기 가능한 섹션을 생성하지 않습니다. 명령어는 색상 출력만으로 표시됩니다.

커스텀 접기 가능 섹션 만들기#

GitLab이 접기 가능 섹션을 구분하는 데 사용하는 특수 코드를 수동으로 출력하여 job 로그의 접기 가능 섹션을 생성할 수 있습니다:

  • 섹션 시작 마커: \e[0Ksection_start:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K + TEXT_OF_SECTION_HEADER
  • 섹션 종료 마커: \e[0Ksection_end:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K

CI 구성의 스크립트 섹션에 이 코드를 추가해야 합니다. 예를 들어 echo를 사용하는 경우:

job1:
  script:
    - echo -e "\e[0Ksection_start:`date +%s`:my_first_section\r\e[0KHeader of the 1st collapsible section"
    - echo 'this line should be hidden when collapsed'
    - echo -e "\e[0Ksection_end:`date +%s`:my_first_section\r\e[0K"

이스케이프 구문은 러너가 사용하는 셸에 따라 다를 수 있습니다. 예를 들어 Zsh를 사용하는 경우 \\e 또는 \\r로 특수 문자를 이스케이프해야 할 수 있습니다.

위 예시에서:

  • date +%s: Unix 타임스탬프를 생성하는 명령어 (예: 1560896352).
  • my_first_section: 섹션에 부여된 이름. 이름은 문자, 숫자, _, ., - 문자로만 구성될 수 있습니다.
  • \r\e[0K: 렌더링된(색상 있는) job 로그에서 섹션 마커가 표시되지 않도록 하는 이스케이프 시퀀스. 원시 job 로그를 볼 때 표시되며, job 로그 오른쪽 상단에서 Show complete raw ([doc-text])를 선택하여 접근할 수 있습니다.
    • \r: 캐리지 리턴(커서를 줄의 시작으로 되돌림).
    • \e[0K: 커서 위치에서 줄 끝까지 줄을 지우는 ANSI 이스케이프 코드. (\e[K만으로는 작동하지 않으며 0을 포함해야 합니다).

원시 job 로그 샘플:

\e[0Ksection_start:1560896352:my_first_section\r\e[0KHeader of the 1st collapsible section
this line should be hidden when collapsed
\e[0Ksection_end:1560896353:my_first_section\r\e[0K

job 콘솔 로그 샘플:

숨겨진 콘텐츠가 있는 접힌 섹션을 보여주는 job 로그

스크립트로 섹션 표시 개선#

섹션 마커를 생성하는 echo 문을 job 출력에서 제거하려면 job 내용을 스크립트 파일로 이동하고 job에서 호출할 수 있습니다:

  1. 섹션 헤더를 처리할 수 있는 스크립트를 생성합니다. 예를 들어:

    # function for starting the section
    function section_start () {
      local section_title="${1}"
      local section_description="${2:-$section_title}"
    
      echo -e "section_start:`date +%s`:${section_title}[collapsed=true]\r\e[0K${section_description}"
    }
    
    # Function for ending the section
    function section_end () {
      local section_title="${1}"
    
      echo -e "section_end:`date +%s`:${section_title}\r\e[0K"
    }
    
    # Create sections
    section_start "my_first_section" "Header of the 1st collapsible section"
    
    echo "this line should be hidden when collapsed"
    
    section_end "my_first_section"
    
    # Repeat as required
    
  2. .gitlab-ci.yml 파일에 스크립트를 추가합니다:

    job:
      script:
        - source script.sh
    

기본적으로 섹션 접기#

섹션을 기본적으로 접으려면 섹션 이름 뒤, \r 앞의 섹션 시작 마커에 [collapsed=true]를 추가합니다:

  • [collapsed=true]가 있는 섹션 시작 마커: \e[0Ksection_start:UNIX_TIMESTAMP:SECTION_NAME[collapsed=true]\r\e[0K + TEXT_OF_SECTION_HEADER
  • 섹션 종료 마커(변경 없음): \e[0Ksection_end:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K

CI 구성에 업데이트된 섹션 시작 텍스트를 추가합니다. 예를 들어 echo를 사용하는 경우:

job1:
  script:
    - echo -e "\e[0Ksection_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 "\e[0Ksection_end:`date +%s`:my_first_section\r\e[0K"

job 로그 삭제#

job 로그를 삭제하면 전체 job도 지워집니다.

자세한 내용은 job 로그 삭제를 참조하세요.

타임스탬프#

히스토리
  • GitLab 17.1에서 parse_ci_job_timestamps라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.
  • 기능 플래그 parse_ci_job_timestamps가 GitLab 17.2에서 제거되었습니다.
  • GitLab 18.9에서 일반 가용성이 되었습니다.

기본적으로 job 로그는 각 줄에 ISO 8601 형식의 타임스탬프를 포함합니다. 타임스탬프를 사용하여 성능 이슈를 해결하고, 병목 현상을 식별하고, 특정 빌드 단계가 얼마나 걸리는지 측정합니다.

타임스탬프가 활성화되면 job 로그는 약 10% 더 많은 저장 공간을 사용합니다.

다음은 타임스탬프가 있는 job 로그의 예시입니다:

각 줄에 UTC 타임스탬프가 있는 job 로그

job 로그의 타임스탬프 제어#

사전 요구사항:

  • GitLab Runner 18.7 이상.

job 로그에 타임스탬프 표시 여부를 제어하려면 FF_TIMESTAMPS CI/CD 변수를 사용합니다:

  • 타임스탬프를 비활성화하려면 false로 설정
  • 타임스탬프를 명시적으로 활성화하려면 true로 설정

예를 들어:

variables:
  FF_TIMESTAMPS: false  # Disables timestamps

job:
  script:
    - echo "This job's log behavior depends on FF_TIMESTAMPS value"

자세한 내용은 .gitlab-ci.yml 파일에서 CI/CD 변수 정의를 참조하세요.

문제 해결#

job 로그 업데이트 느림#

실행 중인 job에 대한 job 로그 페이지를 방문할 때 로그 업데이트 전 최대 60초 지연이 있을 수 있습니다. 기본 새로 고침 시간은 60초이지만, 로그를 UI에서 한 번 보면 로그 업데이트가 3초마다 발생해야 합니다.

GitLab 18.0 이상에서 This job does not have a trace 오류#

GitLab Self-Managed 인스턴스를 18.0 이상으로 업그레이드한 후 This job does not have a trace 오류가 발생할 수 있습니다. 이는 다음 두 가지가 모두 있는 인스턴스에서 실패한 업그레이드 마이그레이션으로 인해 발생할 수 있습니다:

  • 오브젝트 스토리지 활성화
  • 제거된 기능 플래그 ci_enable_live_trace로 이전에 활성화된 증분 로깅. 이 기능 플래그는 GitLab Environment Toolkit 또는 Helm 차트 배포에서 기본적으로 활성화되지만 수동으로도 활성화할 수 있습니다.

영향받은 job에서 job 로그를 볼 수 있는 기능을 복원하려면 증분 로깅을 다시 활성화하세요.

CI/CD job 로그

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

job 로그는 CI/CD job의 전체 실행 기록을 표시합니다. job 및 해당 로그 출력에 대한 자세한 정보를 보려면 job 로그 페이지를 스크롤합니다. Show full screen을 클릭하여 전체 화면 모드로 job 로그 내용을 볼 수 있습니다.

job 로그는 CI/CD job의 전체 실행 기록을 표시합니다.

job 로그 보기#

job 로그를 보려면:

  1. job 로그를 보려는 프로젝트를 선택합니다.
  2. 왼쪽 사이드바에서 CI/CD > Pipelines를 선택합니다.
  3. 검사할 파이프라인을 선택합니다.
  4. 파이프라인 보기에서 job 목록에서 job 로그 페이지를 보려는 job을 선택합니다.

job 및 해당 로그 출력에 대한 자세한 정보를 보려면 job 로그 페이지를 스크롤합니다.

전체 화면 모드로 job 로그 보기#

히스토리
  • GitLab 16.7에서 도입되었습니다.

Show full screen을 클릭하여 전체 화면 모드로 job 로그 내용을 볼 수 있습니다.

전체 화면 모드를 사용하려면 웹 브라우저도 이를 지원해야 합니다. 웹 브라우저가 전체 화면 모드를 지원하지 않으면 옵션이 제공되지 않습니다.

job 로그 섹션 펼치기 및 접기#

히스토리
  • bash 셸에서 멀티라인 명령어 출력이 GitLab 16.5에서 FF_SCRIPT_SECTIONS라는 기능 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.

이 기능의 가용성은 기능 플래그로 제어됩니다. 자세한 내용은 기록을 참조하세요.

FF_SCRIPT_SECTIONS가 활성화되면 멀티라인 스크립트 명령어가 job 로그에서 접기 가능한 섹션으로 표시됩니다. 싱글라인 명령어는 $ 접두사와 함께 직접 출력됩니다. 소요 시간은 표시되지 않습니다.

powershellpwsh 셸에서는 FF_SCRIPT_SECTIONS가 접기 가능한 섹션을 생성하지 않습니다. 명령어는 색상 출력만으로 표시됩니다.

커스텀 접기 가능 섹션 만들기#

GitLab이 접기 가능 섹션을 구분하는 데 사용하는 특수 코드를 수동으로 출력하여 job 로그의 접기 가능 섹션을 생성할 수 있습니다:

  • 섹션 시작 마커: \e[0Ksection_start:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K + TEXT_OF_SECTION_HEADER
  • 섹션 종료 마커: \e[0Ksection_end:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K

CI 구성의 스크립트 섹션에 이 코드를 추가해야 합니다. 예를 들어 echo를 사용하는 경우:

job1:
  script:
    - echo -e "\e[0Ksection_start:`date +%s`:my_first_section\r\e[0KHeader of the 1st collapsible section"
    - echo 'this line should be hidden when collapsed'
    - echo -e "\e[0Ksection_end:`date +%s`:my_first_section\r\e[0K"

이스케이프 구문은 러너가 사용하는 셸에 따라 다를 수 있습니다. 예를 들어 Zsh를 사용하는 경우 \\e 또는 \\r로 특수 문자를 이스케이프해야 할 수 있습니다.

위 예시에서:

  • date +%s: Unix 타임스탬프를 생성하는 명령어 (예: 1560896352).
  • my_first_section: 섹션에 부여된 이름. 이름은 문자, 숫자, _, ., - 문자로만 구성될 수 있습니다.
  • \r\e[0K: 렌더링된(색상 있는) job 로그에서 섹션 마커가 표시되지 않도록 하는 이스케이프 시퀀스. 원시 job 로그를 볼 때 표시되며, job 로그 오른쪽 상단에서 Show complete raw ([doc-text])를 선택하여 접근할 수 있습니다.
    • \r: 캐리지 리턴(커서를 줄의 시작으로 되돌림).
    • \e[0K: 커서 위치에서 줄 끝까지 줄을 지우는 ANSI 이스케이프 코드. (\e[K만으로는 작동하지 않으며 0을 포함해야 합니다).

원시 job 로그 샘플:

\e[0Ksection_start:1560896352:my_first_section\r\e[0KHeader of the 1st collapsible section
this line should be hidden when collapsed
\e[0Ksection_end:1560896353:my_first_section\r\e[0K

job 콘솔 로그 샘플:

숨겨진 콘텐츠가 있는 접힌 섹션을 보여주는 job 로그

스크립트로 섹션 표시 개선#

섹션 마커를 생성하는 echo 문을 job 출력에서 제거하려면 job 내용을 스크립트 파일로 이동하고 job에서 호출할 수 있습니다:

  1. 섹션 헤더를 처리할 수 있는 스크립트를 생성합니다. 예를 들어:

    # function for starting the section
    function section_start () {
      local section_title="${1}"
      local section_description="${2:-$section_title}"
    
      echo -e "section_start:`date +%s`:${section_title}[collapsed=true]\r\e[0K${section_description}"
    }
    
    # Function for ending the section
    function section_end () {
      local section_title="${1}"
    
      echo -e "section_end:`date +%s`:${section_title}\r\e[0K"
    }
    
    # Create sections
    section_start "my_first_section" "Header of the 1st collapsible section"
    
    echo "this line should be hidden when collapsed"
    
    section_end "my_first_section"
    
    # Repeat as required
    
  2. .gitlab-ci.yml 파일에 스크립트를 추가합니다:

    job:
      script:
        - source script.sh
    

기본적으로 섹션 접기#

섹션을 기본적으로 접으려면 섹션 이름 뒤, \r 앞의 섹션 시작 마커에 [collapsed=true]를 추가합니다:

  • [collapsed=true]가 있는 섹션 시작 마커: \e[0Ksection_start:UNIX_TIMESTAMP:SECTION_NAME[collapsed=true]\r\e[0K + TEXT_OF_SECTION_HEADER
  • 섹션 종료 마커(변경 없음): \e[0Ksection_end:UNIX_TIMESTAMP:SECTION_NAME\r\e[0K

CI 구성에 업데이트된 섹션 시작 텍스트를 추가합니다. 예를 들어 echo를 사용하는 경우:

job1:
  script:
    - echo -e "\e[0Ksection_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 "\e[0Ksection_end:`date +%s`:my_first_section\r\e[0K"

job 로그 삭제#

job 로그를 삭제하면 전체 job도 지워집니다.

자세한 내용은 job 로그 삭제를 참조하세요.

타임스탬프#

히스토리
  • GitLab 17.1에서 parse_ci_job_timestamps라는 플래그와 함께 도입되었습니다. 기본적으로 비활성화됩니다.
  • 기능 플래그 parse_ci_job_timestamps가 GitLab 17.2에서 제거되었습니다.
  • GitLab 18.9에서 일반 가용성이 되었습니다.

기본적으로 job 로그는 각 줄에 ISO 8601 형식의 타임스탬프를 포함합니다. 타임스탬프를 사용하여 성능 이슈를 해결하고, 병목 현상을 식별하고, 특정 빌드 단계가 얼마나 걸리는지 측정합니다.

타임스탬프가 활성화되면 job 로그는 약 10% 더 많은 저장 공간을 사용합니다.

다음은 타임스탬프가 있는 job 로그의 예시입니다:

각 줄에 UTC 타임스탬프가 있는 job 로그

job 로그의 타임스탬프 제어#

사전 요구사항:

  • GitLab Runner 18.7 이상.

job 로그에 타임스탬프 표시 여부를 제어하려면 FF_TIMESTAMPS CI/CD 변수를 사용합니다:

  • 타임스탬프를 비활성화하려면 false로 설정
  • 타임스탬프를 명시적으로 활성화하려면 true로 설정

예를 들어:

variables:
  FF_TIMESTAMPS: false  # Disables timestamps

job:
  script:
    - echo "This job's log behavior depends on FF_TIMESTAMPS value"

자세한 내용은 .gitlab-ci.yml 파일에서 CI/CD 변수 정의를 참조하세요.

문제 해결#

job 로그 업데이트 느림#

실행 중인 job에 대한 job 로그 페이지를 방문할 때 로그 업데이트 전 최대 60초 지연이 있을 수 있습니다. 기본 새로 고침 시간은 60초이지만, 로그를 UI에서 한 번 보면 로그 업데이트가 3초마다 발생해야 합니다.

GitLab 18.0 이상에서 This job does not have a trace 오류#

GitLab Self-Managed 인스턴스를 18.0 이상으로 업그레이드한 후 This job does not have a trace 오류가 발생할 수 있습니다. 이는 다음 두 가지가 모두 있는 인스턴스에서 실패한 업그레이드 마이그레이션으로 인해 발생할 수 있습니다:

  • 오브젝트 스토리지 활성화
  • 제거된 기능 플래그 ci_enable_live_trace로 이전에 활성화된 증분 로깅. 이 기능 플래그는 GitLab Environment Toolkit 또는 Helm 차트 배포에서 기본적으로 활성화되지만 수동으로도 활성화할 수 있습니다.

영향받은 job에서 job 로그를 볼 수 있는 기능을 복원하려면 증분 로깅을 다시 활성화하세요.