GitLab Runner 특징 플래그

  • GitLab 11.4에서 소개되었습니다.

경고: 기본적으로 비활성화된 기능을 활성화하는 경우 데이터 손상, 안정성 저하, 성능 저하 및 보안 문제가 발생할 수 있습니다. 특징 플래그를 활성화하기 전에 관련된 위험에 대해 인식해야 합니다. 자세한 정보는 개발 중인 기능을 활성화하는 경우의 위험을 참조하십시오.

특징 플래그는 특정 기능을 활성화하거나 비활성화하는 토글입니다. 이러한 플래그는 일반적으로 다음과 같이 사용됩니다:

  • 모든 사용자에게 활성화되지 않은 베타 기능을 자원 봉사자들이 테스트할 수 있도록 제공할 때 사용됩니다.

    베타 기능은 때로는 불완전하거나 추가로 테스트가 필요합니다. 베타 기능을 사용하려는 사용자는 위험을 받아들이고 특징 플래그를 명시적으로 활성화하여 해당 기능을 사용할 수 있습니다. 다른 사용자들은 해당 기능이 필요하지 않거나 시스템에서 위험을 받아들일 의향이 없는 경우 해당 기능이 기본적으로 비활성화되어 가능한 버그 및 회귀의 영향을 받지 않게 됩니다.

  • 곧 기능이 폐기되거나 기능이 제거되는 기존 기능 변경을 위한 중요 변경사항일 때 사용됩니다.

    제품이 발전함에 따라 기능을 때로는 변경하거나 완전히 제거할 수 있습니다. 이미 알려진 버그는 종종 수정되지만 경우에 따라 사용자들이 이미 영향을 받은 버그에 대한 해결책을 이미 찾아냈을 수 있습니다. 표준화된 버그 수정을 적용하도록 강요하는 것은 사용자들의 맞춤 구성에서 다른 문제를 발생시킬 수 있습니다.

    이러한 경우 특징 플래그는 구현의 이전 동작에서 새로운 동작으로의 스무스하고 영구적인 전환이 계획될 수 있는 시간을 제공하기 위해 사용됩니다.

특징 플래그는 환경 변수를 사용하여 토글됩니다. 다음과 같은 방법으로 작동합니다:

  • 특징 플래그를 활성화하려면 해당 환경 변수를 "true" 또는 1로 설정합니다.
  • 특징 플래그를 비활성화하려면 해당 환경 변수를 "false" 또는 0으로 설정합니다.

사용 가능한 특징 플래그

특징 플래그 기본값 폐기됨 제거 예정 설명
FF_CMD_DISABLE_DELAYED_ERROR_LEVEL_EXPANSION false 아니오   Window Batch 쉘을 사용할 때 EnableDelayedExpansion에 대한 오류 확인을 비활성화합니다.
FF_NETWORK_PER_BUILD false 아니오   docker executor로 빌드 당 Docker 네트워크 생성를 활성화합니다.
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY false 아니오   false로 설정되면 exec 대신에 attach를 사용하여 원격 Kubernetes 명령을 비활성화하여 #4119와 같은 문제를 해결합니다.
FF_USE_DIRECT_DOWNLOAD true 아니오   true로 설정되면 Runner는 처음 시도에서 GitLab을 통한 프록시 전달 대신에 모든 아티팩트를 직접 다운로드하려고 시도합니다. 활성화하는 경우 GitLab에 의해 TLS 인증서 검증 문제로 인해 다운로드 실패할 수 있습니다. 자체 서명된 인증서 또는 사용자 지정 인증 기관을 참조하십시오.
FF_SKIP_NOOP_BUILD_STAGES true 아니오   false로 설정되면 모든 빌드 단계가 실행됩니다. 실행해도 효과가 없는 경우에도 실행됩니다.
FF_USE_FASTZIP false 아니오   Fastzip은 캐시/아티팩트 아카이브 및 추출을 위한 고퍼퍼먼트 아카이버입니다.
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR false 아니오   활성화되면 docker executor로 실행된 작업에 대해 umask 0000 호출이 제거됩니다. 대신 Runner는 빌드 컨테이너에서 구성된 사용자의 UID 및 GID를 검색하고 미리 정의된 컨테이너에서 chmod 명령을 실행하여 작업 디렉토리 및 파일의 소유권을 변경합니다. 이 기능 플래그를 위해 빌드 이미지에 POSIX 유틸리티 id가 설치되고 작동해야 합니다. Runner는 UID 및 GID를 검색하기 위해 옵션 -u-gid를 실행합니다.
FF_ENABLE_BASH_EXIT_CODE_CHECK false 아니오   활성화되면 bash 스크립트는 set -e에 단순히 의존하는 것이 아니라 각 스크립트 명령을 실행한 후 비정상 종료 코드를 확인합니다.
FF_USE_WINDOWS_LEGACY_PROCESS_STRATEGY false 아니오   GitLab Runner 16.10 이후에는 기본값은 false입니다. GitLab Runner 16.9 이전에는 기본값은 true입니다. 비활성화되면 Windows에서 Runner가 생성하는 프로세스(쉘 및 사용자 지정 executor)는 프로세스 종료를 개선해야 하는 추가 설정과 함께 생성됩니다. 정상적으로 그레이스풀리(gently) Windows Runner를 드레인(drain)하려면 이 특징 플래그를 false로 설정해야 합니다.
FF_USE_NEW_BASH_EVAL_STRATEGY false 아니오   true로 설정되면 Bash eval 호출은 스크립트 실행의 올바른 종료 코드 감지를 돕기 위해 서브셸에서 실행됩니다.
FF_USE_POWERSHELL_PATH_RESOLVER false 아니오   활성화되면 PowerShell은 Runner 호스트에서 실행되는 OS별 filepath 함수 대신 경로 이름을 해결합니다.
FF_USE_DYNAMIC_TRACE_FORCE_SEND_INTERVAL false 아니오   활성화되면 로그에 대한 추적 강제 송신 간격이 추적 업데이트 간격에 따라 자동으로 조정됩니다.
FF_SCRIPT_SECTIONS false 아니오   활성화되면 .gitlab-ci.yml 파일의 각 스크립트 줄이 작업 출력의 축소 가능한 섹션에 표시되고 각 줄의 지속 시간이 표시됩니다. 명령이 여러 줄에 걸쳐있는 경우 전체 명령이 작업 로그 출력 터미널 내에 표시됩니다.
FF_USE_NEW_SHELL_ESCAPE false 아니오   활성화되면 더 빠른 쉘 이스케이프 구현이 사용됩니다.
FF_ENABLE_JOB_CLEANUP false 아니오   활성화되면 빌드가 끝날 때 프로젝트 디렉토리가 정리됩니다. GIT_CLONE을 사용하는 경우 전체 프로젝트 디렉터리가 삭제되고 GIT_FETCH를 사용하는 경우 일련의 Git clean 명령이 발행됩니다.
FF_KUBERNETES_HONOR_ENTRYPOINT false 아니오   활성화되면 이미 설정된 FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY를 통해 안내되는 경우 이미지의 Docker 엔트리 포인트가 준수됩니다.
FF_POSIXLY_CORRECT_ESCAPES false 아니오   활성화되면 POSIX 셸 이스케이프가 사용되며 bash-스타일 ANSI-C 인용 대신 사용됩니다. 작업 환경에서 POSIX 호환 셸을 사용하는 경우 활성화해야 합니다.
FF_USE_IMPROVED_URL_MASKING false 아니오   활성화되면 민감한 URL 매개 변수가 나타나는 곳에 관계없이 모든 추적 로그 출력에서 마스킹됩니다. 비활성화되면 민감한 URL 매개 변수가 선택적으로만 마스킹되어 가끔 노출될 수 있습니다. 이 특징 플래그를 작업에서가 아니라 Runner의 구성을 통해서만 구성할 수 있습니다.
FF_RESOLVE_FULL_TLS_CHAIN false 아니오   GitLab 16.4 이후에는 기본값은 false입니다. GitLab 16.3 이전에는 기본값은 true입니다. 활성화되면 Runner는 CI_SERVER_TLS_CA_FILE에 대한 자체 서명 루트 인증서까지의 전체 TLS 체인을 해결합니다. Git HTTPS 클론을 작동하려면 이전 바전의 libcurl 및 OpenSSL을 사용하여 빌드된 Git 클라이언트에서 필요했습니다. 그러나 인증서 해결 프로세스는 이전 서명 알고리즘으로 서명된 루트 인증서를 거부하는 macOS와 같은 운영 체제에서 실패할 수 있습니다. 인증서 해결이 실패하는 경우, 이 특징을 비활성화해야 할 수 있습니다. 이 특징 플래그는 [runners.feature_flags] 구성에서만 비활성화될 수 있습니다.
FF_DISABLE_POWERSHELL_STDIN false 아니오   활성화되면 쉘 및 사용자 지정 executor에 대한 PowerShell 스크립트가 파일로 전달되며 stdin을 통해 전달 및 실행되지 않습니다. 이것은 작업의 allow_failure:exit_codes 키워드가 올바르게 작동하도록 필요합니다.
FF_USE_POD_ACTIVE_DEADLINE_SECONDS true 아니오   활성화되면 activeDeadlineSeconds이 CI/CD 작업 시간 초과로 설정됩니다. 이 플래그는 팟의 라이프사이클에 영향을 미칩니다.
FF_USE_ADVANCED_POD_SPEC_CONFIGURATION false 아니오   활성화되면 사용자는 config.toml 파일에 전체 팟 사양을 설정할 수 있습니다. 자세한 정보는 생성된 팟 사양 덮어쓰기(실험)를 참조하십시오.
FF_SET_PERMISSIONS_BEFORE_CLEANUP true 아니오   활성화되면 프로젝트 디렉토리의 디렉토리 및 파일의 권한이 삭제 중에 성공적으로 삭제되도록 먼저 설정됩니다.
FF_SECRET_RESOLVING_FAILS_IF_MISSING true 아니오   활성화되면 값이 없는 경우 비밀 코드의 해결이 실패합니다.
FF_RETRIEVE_POD_WARNING_EVENTS false 아니오   활성화되면 작업 실패 시 팟과 관련된 모든 경고 이벤트가 검색됩니다.
FF_PRINT_POD_EVENTS false 아니오   활성화되면 작업 팟과 관련된 모든 이벤트가 시작될 때까지 인쇄됩니다.
FF_USE_GIT_BUNDLE_URIS true 아니오   활성화되면 Git transfer.bundleURI 구성 옵션이 true로 설정됩니다. 이 FF는 기본값으로 활성화됩니다. Git 번들 지원을 비활성화하려면 false로 설정하십시오.
FF_USE_DUMB_INIT_WITH_KUBERNETES_EXECUTOR false 아니오   활성화되면 dumb-init이 모든 스크립트를 실행하는 데 사용됩니다. 이로써 dumb-init이 도우미 및 빌드 컨테이너의 첫 번째 프로세스로 실행됩니다.
FF_USE_INIT_WITH_DOCKER_EXECUTOR false 아니오    

파이프라인 구성에서 기능 플래그 활성화

CI 변수를 사용하여 기능 플래그를 활성화할 수 있습니다.

  • 파이프라인의 모든 작업에 대해 (전역적으로):

    변수:
      FEATURE_FLAG_NAME: 1
    
  • 단일 작업에 대해:

    작업:
      단계: 테스트
      변수:
        FEATURE_FLAG_NAME: 1
      스크립트:
      - echo "안녕하세요"
    

러너 환경 변수에서 기능 플래그 활성화

모든 작업에 대해 기능을 활성화하려면 러너가 실행하는 환경으로 기능 플래그를 지정하십시오. 이는 러너 구성environment 변수로 지정됩니다.

[[runners]]
  name = "ruby-2.7-docker"
  url = "https://CI/"
  token = "토큰"
  limit = 0
  executor = "도커"
  builds_dir = ""
  shell = ""
  environment = ["FEATURE_FLAG_NAME=1"]

러너 구성에서 기능 플래그 활성화

[runners.feature_flags] 아래에 지정하여 기능 플래그를 활성화할 수 있습니다. 이 설정은 기능 플래그 값을 덮어쓰지 못하게 합니다.

이 설정을 구성할 때 일부 기능 플래그는 작업 실행 방식과 관련이 없기 때문에 이 설정을 구성하지 않으면 사용할 수 없습니다.

[[runners]]
  name = "ruby-2.7-docker"
  url = "https://CI/"
  token = "토큰"
  executor = "도커"
  [runners.feature_flags]
    FF_USE_DIRECT_DOWNLOAD = true