markdown # GitLab Runner 기능 플래그

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

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

  • 모든 사용자에게 사용할 준비가 아니지만 자발적인 테스트를 위해 제공되는 베타 기능.

    베타 기능은 때로는 미완성이거나 추가 테스트가 필요할 수 있습니다. 베타 기능을 사용하고자 하는 사용자는 리스크를 받아들일 수 있고, 기능 플래그를 통해 명시적으로 해당 기능을 활성화할 수 있습니다. 해당 기능이 필요하지 않거나 시스템에서 해당 리스크를 받아들일 준비가 되지 않은 다른 사용자는 해당 기능이 기본적으로 비활성화되어 가능한 버그 및 회귀에 영향을 받지 않습니다.

  • 곧 제거될 기능으로 인한 기능이 부족하거나 기능이 제거되는 변경 사항.

    제품이 진화함에 따라 기능이 종종 변경되거나 완전히 제거됩니다. 알려진 버그는 종종 수정되지만, 경우에 따라 사용자가 이미 영향을 받은 버그에 대한 해결책을 이미 찾은 경우가 있습니다. 표준화된 버그 수정을 강제로 채택하면 해당 사용자의 사용자 지정 구성에서 다른 문제가 발생할 수 있습니다.

    이러한 경우에 기능 플래그는 이전 동작에서 새로운 동작으로 필요에 따라 전환하는 데 사용됩니다. 이를 통해 사용자가 제품의 새 버전을 채택하면서 이전 동작에서 새로운 동작으로의 원활하고 영구적인 전환을 계획할 시간을 제공합니다.

기능 플래그는 환경 변수를 사용하여 토글됩니다. 다음과 같은 방법으로 활성화 또는 비활성화할 수 있습니다:

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

사용 가능한 기능 플래그

기능 플래그 기본값 사용 중지됨 다음 버전에서 제거됨 설명
FF_NETWORK_PER_BUILD false No   docker executor로 ../executors/docker.md#network-configurations의 Docker 네트워크 생성을 활성화합니다.
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY false No   exec 대신 attach를 통해 원격 Kubernetes 명령 실행을 비활성화합니다. #4119와 같은 문제를 해결합니다.
FF_USE_DIRECT_DOWNLOAD true No   첫 시도 때 GitLab을 통해 프록시하는 대신 Runner가 모든 artifact를 직접 다운로드하려고 시도합니다. GitLab에서 TLS 인증서 유효성을 검증하는 문제로 인해 다운로드 중 실패할 수 있습니다. 자세한 내용은 Self-signed certificates or custom Certification Authorities를 참조하십시오.
FF_SKIP_NOOP_BUILD_STAGES true No   실행 중인데도 영향을 미치지 않는 모든 빌드 스테이지가 실행되도록 설정합니다.
FF_USE_FASTZIP false No   Fastzip은 캐시/아티팩트 압축 및 해제를 위한 높은 성능의 아카이버입니다.
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR false No   docker executor로 실행되는 작업에 대해 umask 0000 호출을 제거합니다. 대신 Runner는 빌드 컨테이너에서 구성된 사용자의 UID 및 GID를 찾으려고 하며, 소스를 업데이트하고 캐시를 복원하고 artifact를 다운로드 한 후 미리 정의된 컨테이너에서 chmod 명령을 실행하여 작업 디렉토리 및 파일의 소유권을 변경합니다. POSIX 유틸리티 id는 이 기능 플래그를 위해 작업 이미지에 설치되어 있어야 합니다. Runner는 사용자의 UID 및 GID를 검색하려고 하기 위해 옵션 -u-g를 사용하여 id를 실행합니다.
FF_ENABLE_BASH_EXIT_CODE_CHECK false No   활성화되면 bash 스크립트가 set -e 만 신뢰하는 것이 아닌 각 스크립트 명령 실행 후에 비정상적인 종료 코드를 확인합니다.
FF_USE_WINDOWS_LEGACY_PROCESS_STRATEGY false No   GitLab Runner 16.10 및 이후 버전에서 기본값은 false입니다. GitLab Runner 16.9 및 이전 버전에서 기본값은 true입니다. 비활성화되면, Windows에서 Runner가 생성하는 프로세스(셸 및 사용자 지정 executor)에 프로세스가 종료될 수 있도록 추가 설정이 사용됩니다. true로 설정하면 이전 프로세스 설정이 사용됩니다. Windows Runner를 정상적으로 완전히 비우려면 이 기능 플래그를 false로 설정해야 합니다.
FF_USE_NEW_BASH_EVAL_STRATEGY false No   true로 설정하면 Bash의 eval 호출이 스크립트 실행의 적절한 종료 코드 감지에 도움이 되도록 하위 쉘에서 실행됩니다.
FF_USE_POWERSHELL_PATH_RESOLVER false No   활성화되면 PowerShell이 Runner가 호스팅된 위치에 따라 나온 OS 특정 파일 경로 함수를 사용하는 대신 경로 이름을 해석합니다.
FF_USE_DYNAMIC_TRACE_FORCE_SEND_INTERVAL false No   활성화되면 로그의 추적 강제 전송 간격이 추적 업데이트 간격에 따라 동적으로 조정됩니다.
FF_SCRIPT_SECTIONS false No   활성화되면 .gitlab-ci.yml 파일의 각 스크립트 줄이 작업 출력의 접기 가능한 섹션에 표시되며 각 줄의 지속 시간이 표시됩니다. 명령이 여러 줄에 걸쳐 있는 경우, 완전한 명령이 작업 로그 출력 터미널에 표시됩니다.
FF_ENABLE_JOB_CLEANUP false No   활성화되면 빌드가 종료될 때 프로젝트 디렉터리가 정리됩니다. GIT_CLONE을 사용하는 경우 전체 프로젝트 디렉터리가 삭제됩니다. GIT_FETCH를 사용하는 경우 일련의 Git clean 명령이 발생합니다.
FF_KUBERNETES_HONOR_ENTRYPOINT false No   활성화되면 FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGYtrue로 설정되지 않으면 이미지의 Docker 엔트리포인트가 존중됩니다.
FF_POSIXLY_CORRECT_ESCAPES false No   활성화되면 bash-style ANSI-C quoting 대신 POSIX shell escapes가 사용됩니다. 작업 환경이 준수하는 POSIX 호환 쉘이 사용되는 경우 이 기능이 활성화되어야 합니다.
FF_RESOLVE_FULL_TLS_CHAIN false No   GitLab Runner 16.4 이상의 기본값은 false입니다. GitLab Runner 16.3 이하의 기본값은 true입니다. 활성화되면 CI_SERVER_TLS_CA_FILE의 전체 TLS 체인이 모든 운영 체제에서 루트 인증서에 이르기까지 해결됩니다. 이전에는 Git HTTPS clones work을 위해 필요했습니다. 그러나 인증서 해결 프로세스가 일부 운영 체제(예: macOS)에서 이전 서명 알고리즘으로 서명된 루트 인증서를 거부할 수 있습니다. 인증서 해결이 실패하는 경우 이 기능을 비활성화해야 할 수 있습니다. 이 기능 플래그는 [runners.feature_flags] configuration에서만 비활성화될 수 있습니다.
FF_DISABLE_POWERSHELL_STDIN false No   활성화되면 셸 및 사용자 지정 executor의 PowerShell 스크립트가 파일을 통해 전달되며 stdin에서 전달되고 실행되지 않습니다. 이것은 작업의 allow_failure:exit_codes 키워드가 올바르게 작동하기 위해 필요합니다.
FF_USE_POD_ACTIVE_DEADLINE_SECONDS true No   활성화되면 pod activeDeadlineSeconds가 CI/CD 작업 시간 초과로 설정됩니다. 이 플래그는 pod의 라이프사이클에 영향을 줍니다.
FF_USE_ADVANCED_POD_SPEC_CONFIGURATION false No   활성화되면 사용자가 config.toml 파일에 전체 pod 사양을 설정할 수 있습니다. 자세한 내용은 생성된 pod 사양 덮어쓰기(실험)를 참조하십시오.
FF_SET_PERMISSIONS_BEFORE_CLEANUP true No   활성화되면 프로젝트 디렉터리의 디렉터리 및 파일에 대한 권한이 먼저 설정되어 클린업 중에 성공적으로 삭제되도록 보장됩니다.
FF_SECRET_RESOLVING_FAILS_IF_MISSING true No   활성화되면 값을 찾을 수 없을 경우 시크릿 해결이 실패합니다.
FF_RETRIEVE_POD_WARNING_EVENTS true Yes   활성화되면 작업 실패 시 포드와 연결된 모든 경고 이벤트가 검색됩니다. 이 기능 플래그는 GitLab Runner 17.2에서 사용 중지되었으며 18.0에서 제거될 예정입니다. GitLab Runner 17.2 및 이후, 포드 경고 이벤트가 조건없이 검색되고 기록되지만 RBAC 권한이 없으면 실패하지 않습니다.
FF_PRINT_POD_EVENTS false No   활성화되면 빌드 포드와 관련된 모든 이벤트가 시작될 때까지 출력됩니다.
FF_USE_GIT_BUNDLE_URIS true No   활성화되면 Git transfer.bundleURI 구성 옵션이 true로 설정됩니다. 이 기능 플래그는 기본적으로 활성화되어 있습니다. Git 번들 지원을 비활성화하려면 false로 설정하십시오.
FF_USE_DUMB_INIT_WITH_KUBERNETES_EXECUTOR false No   활성화되면 dumb-init이 모든 스크립트를 실행하는 데 사용됩니다. 이를 통해 dumb-init이 도우미 및 빌드 컨테이너에서 첫 번째 프로세스로 실행됩니다.
FF_USE_INIT_WITH_DOCKER_EXECUTOR false No   활성화되면 Docker executor가 서비스 및 빌드 컨테이너를 --init 옵션을 사용하여 시작하도록합니다. 이로써 tini-init이 PID 1로 실행됩니다.
FF_LOG_IMAGES_CONFIGURED_FOR_JOB false No   활성화되면 runner가 수신된 각 작업에 대해 정의된 이미지 및 서비스 이미지의 이름을 로깅합니다.
FF_USE_DOCKER_AUTOSCALER_DIAL_STDIO true No   활성화된 경우 원격 Docker 데몬에 터널링하기 위해 docker system stdio가 사용됩니다. 비활성화되면 SSH 연결에 대해 기본 SSH 터널이 사용되며 WinRM 연결에는 먼저 ‘fleeting-proxy’ 헬퍼 이진 파일이 배포됩니다.

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

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

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

    variables:
      FEATURE_FLAG_NAME: 1
    
  • 단일 작업에 대해:

    job:
      stage: test
      variables:
        FEATURE_FLAG_NAME: 1
      script:
      - echo "안녕하세요"
    

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

모든 작업을 실행하는 러너에서 특정 기능을 활성화하려면 해당 기능 플래그를 러너 구성environment 변수로 지정하세요:

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

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

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

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

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