GitLab Runner 기능 플래그
경고:
기본적으로 비활성화된 기능을 활성화할 경우 데이터 손상, 안정성 저하, 성능 저하 및 보안 문제가 발생할 수 있습니다. 기능 플래그를 활성화하기 전에 관련된 위험을 인지해야 합니다. 더 많은 정보는 개발 중인 기능 활성화 시 위험을 참조하십시오.
기능 플래그는 특정 기능을 활성화하거나 비활성화할 수 있는 토글입니다. 이러한 플래그는 일반적으로 다음과 같이 사용됩니다:
-
모든 사용자에게 활성화할 준비가 되지 않은 자원봉사자를 위한 베타 기능에 대해 사용됩니다.
베타 기능은 종종 불완전하거나 추가적인 테스트가 필요합니다. 베타 기능을 사용하려는 사용자는 위험을 수용하고 기능 플래그로 명시적으로 기능을 활성화할 수 있습니다. 기능이 필요하지 않거나 시스템에서 위험을 감수할 의사가 없는 다른 사용자들은 기본적으로 기능이 비활성화되어 있으며 가능한 버그 및 회귀로부터 영향을 받지 않습니다.
-
가까운 미래에 기능 사용 중단 또는 제거를 초래하는 파괴적인 변화에 대해 사용됩니다.
제품이 진화함에 따라 기능이 변경되거나 완전히 제거되는 경우가 있습니다. 알려진 버그는 종종 수정되지만, 경우에 따라 사용자들은 이미 자신에게 영향을 미친 버그에 대한 우회 솔루션을 찾았으며, 사용자에게 표준화된 버그 수정을 강제하면 맞춤화된 구성에 다른 문제가 발생할 수 있습니다.
이러한 경우, 기능 플래그를 사용하여 구형 동작에서 새로운 동작으로 즉석에서 전환할 수 있습니다. 이는 사용자가 구형 동작에서 새로운 동작으로 원활하게 영구 전환할 시간을 제공하면서 제품의 새 버전을 채택할 수 있게 합니다.
기능 플래그는 환경 변수를 사용하여 전환됩니다.
- 기능 플래그를 활성화하려면 해당 환경 변수를
"true"
또는1
로 설정하십시오. - 기능 플래그를 비활성화하려면 해당 환경 변수를
"false"
또는0
으로 설정하십시오.
사용 가능한 기능 플래그
기능 플래그 | 기본값 | 사용 중단 | 제거 예정 | 설명 |
---|---|---|---|---|
FF_NETWORK_PER_BUILD |
false |
아니요 |
docker 실행기를 사용하여 Docker 빌드당 네트워크 생성을 활성화합니다. |
|
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY |
false |
아니요 |
false 로 설정하면 원격 Kubernetes 명령 실행을 exec 대신 attach 로 비활성화하여 #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 실행기로 실행되는 작업에 대한 umask 0000 호출 사용이 제거됩니다. 대신 Runner는 빌드 컨테이너에 사용되는 이미지에 대해 구성된 사용자 UID 및 GID를 발견하고, 사전 정의된 컨테이너에서 chmod 명령을 실행하여 작업 디렉토리 및 파일의 소유권을 변경하려고 합니다(원본 업데이트, 캐시 복원 및 아티팩트 다운로드 후). POSIX 유틸리티 id 는 빌드 이미지에 설치되고 작동 가능해야 합니다. Runner는 UID 및 GID를 검색하기 위해 -u 및 -g 옵션으로 id 를 실행합니다. |
|
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 입니다. 비활성화하면 Runner가 Windows에서 생성하는 프로세스(셸 및 사용자 정의 실행기)는 프로세스 종료 개선을 위한 추가 설정으로 생성됩니다. true 로 설정하면 구형 프로세스 설정이 사용됩니다. Windows Runner를 성공적이고 원활하게 배수하기 위해 이 기능 플래그는 false 로 설정해야 합니다. |
|
FF_USE_NEW_BASH_EVAL_STRATEGY |
false |
아니요 |
true 로 설정하면 Bash eval 호출이 서브셸에서 실행되어 실행된 스크립트의 올바른 종료 코드 탐지를 돕습니다. |
|
FF_USE_POWERSHELL_PATH_RESOLVER |
false |
아니요 | 활성화하면 PowerShell이 경로 이름을 해결하며, Runner는 호스트되는 OS 특정 파일 경로 기능을 사용하지 않습니다. | |
FF_USE_DYNAMIC_TRACE_FORCE_SEND_INTERVAL |
false |
아니요 | 활성화하면 로그의 추적 강제 전송 간격이 추적 업데이트 간격에 따라 동적으로 조정됩니다. | |
FF_SCRIPT_SECTIONS |
false |
아니요 | 활성화하면 .gitlab-ci.yml 파일의 각 스크립트 줄이 작업 출력에서 축소 가능 섹션에 포함되며, 각 줄의 소요 시간을 표시합니다. 명령이 여러 줄에 걸쳐 있는 경우, 전체 명령이 작업 로그 출력 터미널 내에서 표시됩니다. |
|
FF_ENABLE_JOB_CLEANUP |
false |
아니요 | 활성화하면 빌드가 끝날 때 프로젝트 디렉토리가 정리됩니다. GIT_CLONE 이 사용되면 전체 프로젝트 디렉토리가 삭제됩니다. GIT_FETCH 가 사용되면 일련의 Git clean 명령이 발행됩니다. |
|
FF_KUBERNETES_HONOR_ENTRYPOINT |
false |
아니요 | 활성화되면 이미지의 Docker entrypoint가 FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY 가 true로 설정되지 않은 경우도 존중됩니다. |
|
FF_POSIXLY_CORRECT_ESCAPES |
false |
아니요 | 활성화되면 POSIX 셸 이스케이프 사용되며 bash 스타일 ANSI-C 인용은 사용되지 않습니다. 작업 환경이 POSIX 준수 셸을 사용하는 경우 이 설정을 활성화해야 합니다. |
|
FF_RESOLVE_FULL_TLS_CHAIN |
false |
아니요 | GitLab Runner 16.4 이상에서는 기본값이 false 입니다. GitLab Runner 16.3 이하에서는 기본값이 true 입니다. 활성화되면 Runner는 CI_SERVER_TLS_CA_FILE 을 위해 자체 서명된 루트 인증서까지 전체 TLS 체인을 해결합니다. 이는 이전에 Git 클라이언트가 libcurl로 작성된 경우 Git HTTPS 클론이 작동하도록 만들기 위해 필요했습니다. 그러나 인증서 해결 프로세스는 일부 운영 체제, 예를 들어 macOS와 같이 오래된 서명 알고리즘으로 서명된 루트 인증서를 거부하는 시스템에서 실패할 수 있습니다. 인증서 해결이 실패하면 이 기능을 비활성화해야 할 수도 있습니다. 이 기능 플래그는 [runners.feature_flags] 구성에서만 비활성화할 수 있습니다. |
|
FF_DISABLE_POWERSHELL_STDIN |
false |
아니요 | 활성화되면 셸 및 사용자 정의 실행기에 대한 PowerShell 스크립트가 표준 입력(stdin)을 통해 전달되지 않고 파일로 전달됩니다. 이는 작업의 allow_failure:exit_codes 키워드가 올바르게 작동하도록 요구됩니다. |
|
FF_USE_POD_ACTIVE_DEADLINE_SECONDS |
true |
아니요 | 활성화되면 pod의 activeDeadlineSeconds 가 CI/CD job timeout으로 설정됩니다. 이 플래그는 pod의 수명 주기에 영향을 줍니다. |
|
FF_USE_ADVANCED_POD_SPEC_CONFIGURATION |
false |
아니요 | 활성화되면 사용자가 config.toml 파일에서 전체 pod 사양을 설정할 수 있습니다. 더 많은 정보는 생성된 pod 사양 덮어쓰기 (실험)를 참조하십시오. |
|
FF_SET_PERMISSIONS_BEFORE_CLEANUP |
true |
아니요 | 활성화하면 프로젝트 디렉토리의 디렉토리 및 파일에 대한 권한이 먼저 설정되어 정리 중 삭제가 성공적으로 이루어질 수 있도록 합니다. | |
FF_SECRET_RESOLVING_FAILS_IF_MISSING |
true |
아니요 | 활성화하면 값을 찾을 수 없는 경우 비밀 해결이 실패합니다. | |
FF_RETRIEVE_POD_WARNING_EVENTS |
true |
예 | 활성화되면 작업이 실패할 때 pod와 관련된 모든 경고 이벤트가 검색됩니다. 이 플래그는 GitLab Runner 17.2에서 사용 중단되었으며 18.0에서 제거될 예정입니다. GitLab Runner 17.2 및 이후 버전에서는 pod 경고 이벤트가 조건 없이 검색되고 기록됩니다. 그러나 RBAC 권한이 없더라도 실패가 발생하지 않습니다. | |
FF_PRINT_POD_EVENTS |
false |
아니요 | 활성화하면 빌드 pod와 관련된 모든 이벤트가 시작될 때까지 인쇄됩니다. | |
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 |
아니요 | 활성화되면 Docker 실행기가 --init 옵션으로 서비스 및 빌드 컨테이너를 시작하며, PID 1로 tini-init 가 실행됩니다. |
|
FF_LOG_IMAGES_CONFIGURED_FOR_JOB |
false |
아니요 | 활성화된 경우 Runner는 수신된 각 작업에 대해 정의된 이미지 및 서비스 이미지의 이름을 기록합니다. | |
FF_USE_DOCKER_AUTOSCALER_DIAL_STDIO |
true |
아니요 | 활성화되면(기본값) docker system stdio 가 원격 Docker 데몬에 터널링하는 데 사용됩니다. 비활성화되면 SSH 연결에 대해 기본 SSH 터널이 사용되며, WinRM 연결에 대해서는 ‘fleeting-proxy’ 헬퍼 바이너리가 먼저 배포됩니다. |
|
FF_CLEAN_UP_FAILED_CACHE_EXTRACT |
false |
아니요 | 활성화하면 빌드 스크립트에 실패한 캐시 추출을 감지하고 남은 부분 캐시 내용을 정리하는 명령이 삽입됩니다. | |
FF_USE_WINDOWS_JOB_OBJECT |
false |
아니요 | 활성화되면 Runner가 Windows에서 셸 및 사용자 정의 실행기를 사용하여 생성하는 각 프로세스에 대한 작업 객체가 생성됩니다. 프로세스를 강제로 종료하려면 Runner가 작업 객체를 닫습니다. 이것은 종료하기 어려운 프로세스의 종료를 개선해야 합니다. | |
FF_TIMESTAMPS |
false |
아니요 | 활성화되면 각 로그 추적 줄의 시작에 타임스탬프가 추가됩니다. | |
FF_DISABLE_AUTOMATIC_TOKEN_ROTATION |
false |
아니요 | 활성화되면 자동 토큰 회전을 제한하고 토큰 만료가 가까워질 때 경고를 기록합니다. | |
FF_USE_LEGACY_GCS_CACHE_ADAPTER |
false |
아니요 | 활성화되면 레거시 GCS 캐시 어댑터가 사용됩니다. 비활성화하면(기본값) Google Cloud Storage의 SDK를 사용하는 새로운 GCS 캐시 어댑터가 사용되어 인증 문제를 해결해야 합니다. | |
FF_DISABLE_UMASK_FOR_KUBERNETES_EXECUTOR |
false |
아니요 | 활성화되면 Kubernetes 실행기로 실행되는 작업에 대한 umask 0000 호출이 제거됩니다. 대신, Runner는 빌드 컨테이너가 실행되는 사용자에 대한 UID 및 GID를 발견하려고 시도합니다. Runner는 또한 (소스 업데이트, 캐시 복원 및 아티팩트 다운로드 후) 사전 정의된 컨테이너에서 chown 명령을 실행하여 작업 디렉토리 및 파일의 소유권을 변경합니다. |
|
FF_USE_LEGACY_S3_CACHE_ADAPTER |
false |
아니요 | 활성화되면 레거시 S3 캐시 어댑터가 사용됩니다. 비활성화하면(기본값) Amazon의 S3 SDK를 사용하는 새로운 S3 캐시 어댑터가 사용되어 인증 문제를 해결해야 합니다. | |
FF_GIT_URLS_WITHOUT_TOKENS |
false |
아니요 | 활성화되면 GitLab Runner는 Git 구성 또는 명령 실행 중에 작업 토큰을 어디에도 삽입하지 않습니다. 대신, 환경 변수를 사용하여 작업 토큰을 가져오는 Git 자격 증명 헬퍼를 설정합니다. 이 접근법은 토큰 저장을 제한하고 유출 가능성을 줄입니다. | |
FF_WAIT_FOR_POD_TO_BE_REACHABLE |
false |
아니요 | 활성화되면 Runner는 Pod 상태가 ‘실행 중’이 되고 Pod가 인증서가 부착된 준비 상태일 때까지 기다립니다. |
파이프라인 구성에서 기능 플래그 활성화
CI 변수를 사용하여 기능 플래그를 활성화할 수 있습니다:
-
파이프라인의 모든 작업에 대해 (전역적으로):
variables: FEATURE_FLAG_NAME: 1
-
단일 작업에 대해:
job: stage: test variables: FEATURE_FLAG_NAME: 1 script: - echo "Hello"
러너 환경 변수에서 기능 플래그 활성화
러너가 실행하는 모든 작업에 기능을 활성화하려면
러너 구성에서 기능 플래그를
environment
변수로 지정하세요:
[[runners]]
name = "ruby-2.7-docker"
url = "https://CI/"
token = "TOKEN"
limit = 0
executor = "docker"
builds_dir = ""
shell = ""
environment = ["FEATURE_FLAG_NAME=1"]
러너 구성에서 기능 플래그 활성화
- Introduced in GitLab Runner 13.11.
기능 플래그를 활성화하려면 [runners.feature_flags]
아래에 이를 지정하세요.
이 설정은 어떤 작업도 기능 플래그 값을 재정의하는 것을 방지합니다.
일부 기능 플래그는 이 설정을 구성해야만 사용할 수 있으며, 이는 작업이 실행되는 방식과 관련이 없습니다.
[[runners]]
name = "ruby-2.7-docker"
url = "https://CI/"
token = "TOKEN"
executor = "docker"
[runners.feature_flags]
FF_USE_DIRECT_DOWNLOAD = true