GitLab Runner 기능 플래그
기본적으로 비활성화된 기능을 활성화하면 데이터 손상, 안정성 저하, 성능 저하 및 보안 문제가 발생할 수 있습니다. 기능 플래그는 특정 기능을 활성화하거나 비활성화할 수 있는 토글입니다. 자원봉사자가 테스트할 수 있도록 제공되지만 모든 사용자에게 활성화할 준비가 되지 않은 베타 기능의 경우.
기본적으로 비활성화된 기능을 활성화하면 데이터 손상, 안정성 저하, 성능 저하 및 보안 문제가 발생할 수 있습니다. 기능 플래그를 활성화하기 전에 관련 위험을 인지해야 합니다. 자세한 내용은 개발 중인 기능 활성화 시 위험을 참고하세요.
기능 플래그는 특정 기능을 활성화하거나 비활성화할 수 있는 토글입니다. 이 플래그는 일반적으로 다음 경우에 사용됩니다:
-
자원봉사자가 테스트할 수 있도록 제공되지만 모든 사용자에게 활성화할 준비가 되지 않은 베타 기능의 경우.
베타 기능은 때로 불완전하거나 추가 테스트가 필요합니다. 베타 기능을 사용하려는 사용자는 위험을 감수하고 기능 플래그로 해당 기능을 명시적으로 활성화할 수 있습니다. 기능이 필요하지 않거나 시스템에서 위험을 감수하지 않으려는 다른 사용자는 기능이 기본적으로 비활성화되어 있어 가능한 버그와 회귀의 영향을 받지 않습니다.
-
가까운 미래에 기능 지원 중단이나 기능 제거를 초래하는 주요 변경 사항의 경우.
제품이 발전함에 따라 기능이 변경되거나 완전히 제거되는 경우가 있습니다. 알려진 버그는 종종 수정되지만, 일부 경우 사용자가 이미 영향을 받은 버그에 대한 해결책을 찾아낸 경우가 있습니다. 표준화된 버그 수정을 강제로 채택하게 하면 사용자 정의 구성에 다른 문제가 발생할 수 있습니다.
이러한 경우 기능 플래그를 사용하여 필요에 따라 이전 동작에서 새 동작으로 전환합니다. 이를 통해 사용자는 이전 동작에서 새 동작으로의 원활하고 영구적인 전환을 계획할 시간을 갖고 새 버전의 제품을 채택할 수 있습니다.
기능 플래그는 환경 변수를 사용하여 토글됩니다. 기능 플래그를:
- 활성화하려면 해당 환경 변수를
"true"또는1로 설정합니다. - 비활성화하려면 해당 환경 변수를
"false"또는0으로 설정합니다.
사용 가능한 기능 플래그#
| 기능 플래그 | 기본값 | 지원 중단 | 제거 예정 | 설명 |
|---|---|---|---|---|
FF_NETWORK_PER_BUILD |
false |
[dotted-circle] No | docker 실행기로 빌드별 네트워크 생성을 활성화합니다. 네트워크 이름을 가져오려면 CI_BUILD_NETWORK_NAME 변수를 사용하세요. |
|
FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY |
false |
[dotted-circle] No | false로 설정하면 #4119와 같은 문제를 해결하기 위해 exec 대신 attach를 통한 원격 Kubernetes 명령 실행을 비활성화합니다. 이 기능 플래그는 서비스 계정에 특정 권한이 필요합니다. 자세한 내용은 runner API 권한 구성을 참조하십시오. |
|
FF_USE_DIRECT_DOWNLOAD |
true |
[dotted-circle] No | true로 설정하면 Runner가 첫 번째 시도에서 GitLab을 통해 프록시하는 대신 모든 아티팩트를 직접 다운로드하려고 시도합니다. 활성화하면 GitLab에서 오브젝트 스토리지가 활성화된 경우 TLS 인증서 유효성 검사 문제로 인해 다운로드 실패가 발생할 수 있습니다. 자체 서명 인증서 또는 사용자 정의 인증 기관을 참고하세요 |
|
FF_SKIP_NOOP_BUILD_STAGES |
true |
[dotted-circle] No | false로 설정하면 실행해도 효과가 없는 경우에도 모든 빌드 단계가 실행됩니다 |
|
FF_USE_FASTZIP |
false |
[dotted-circle] No | Fastzip은 캐시/아티팩트 보관 및 추출을 위한 고성능 아카이버입니다 | |
FF_DISABLE_UMASK_FOR_DOCKER_EXECUTOR |
false |
[dotted-circle] No | 활성화하면 docker 실행기로 실행되는 작업에 대해 umask 0000 호출 사용이 제거됩니다. 대신 Runner는 빌드 컨테이너에 사용된 이미지에 대해 구성된 사용자의 UID 및 GID를 검색하고, 미리 정의된 컨테이너에서 chmod 명령을 실행하여 작업 디렉터리 및 파일의 소유권을 변경합니다(소스 업데이트, 캐시 복원 및 아티팩트 다운로드 후). POSIX 유틸리티 id가 빌드 이미지에 설치되어 있고 작동해야 합니다. Runner는 UID와 GID를 검색하기 위해 -u 및 -g 옵션으로 id를 실행합니다. |
|
FF_ENABLE_BASH_EXIT_CODE_CHECK |
false |
[dotted-circle] No | 활성화하면 bash 스크립트가 set -e만 의존하지 않고 각 스크립트 명령이 실행된 후 0이 아닌 종료 코드를 확인합니다. |
|
FF_USE_WINDOWS_LEGACY_PROCESS_STRATEGY |
false |
[dotted-circle] No | GitLab Runner 16.10 이상에서는 기본값이 false입니다. GitLab Runner 16.9 이하에서는 기본값이 true입니다. 비활성화하면 Runner가 Windows에서 생성하는 프로세스(셸 및 사용자 정의 실행기)가 프로세스 종료를 개선해야 하는 추가 설정으로 생성됩니다. true로 설정하면 레거시 프로세스 설정이 사용됩니다. Windows Runner를 성공적이고 정상적으로 드레인하려면 이 기능 플래그를 false로 설정해야 합니다. |
|
FF_USE_NEW_BASH_EVAL_STRATEGY |
false |
[dotted-circle] No | true로 설정하면 실행된 스크립트의 올바른 종료 코드 감지를 위해 서브셸에서 Bash eval 호출이 실행됩니다. |
|
FF_USE_POWERSHELL_PATH_RESOLVER |
false |
[dotted-circle] No | 활성화하면 PowerShell이 Runner가 호스팅된 위치에 특화된 OS별 파일 경로 함수를 사용하는 대신 경로 이름을 확인합니다. | |
FF_USE_DYNAMIC_TRACE_FORCE_SEND_INTERVAL |
false |
[dotted-circle] No | 활성화하면 로그의 추적 강제 전송 간격이 추적 업데이트 간격에 따라 동적으로 조정됩니다. | |
FF_SCRIPT_SECTIONS |
false |
[dotted-circle] No | 활성화하면 여러 줄 스크립트 명령이 작업 로그에 접을 수 있는 섹션으로 표시되고, 단일 줄 명령은 $ 접두사와 함께 직접 출력됩니다. 이것은 알려진 이슈입니다. 자세한 내용은 이슈 39294를 참고하세요. |
|
FF_ENABLE_JOB_CLEANUP |
false |
[dotted-circle] No | 활성화하면 빌드 종료 시 프로젝트 디렉터리가 정리됩니다. GIT_CLONE을 사용하는 경우 전체 프로젝트 디렉터리가 삭제됩니다. GIT_FETCH를 사용하는 경우 일련의 Git clean 명령이 실행됩니다. |
|
FF_KUBERNETES_HONOR_ENTRYPOINT |
false |
[dotted-circle] No | 활성화하면 FF_USE_LEGACY_KUBERNETES_EXECUTION_STRATEGY가 true로 설정되지 않은 경우 이미지의 Docker 진입점이 존중됩니다. 이 기능 플래그는 서비스 계정에 특정 권한이 필요합니다. 자세한 내용은 runner API 권한 구성을 참조하십시오. |
|
FF_POSIXLY_CORRECT_ESCAPES |
false |
[dotted-circle] No | 활성화하면 bash 스타일 ANSI-C 인용 대신 POSIX 셸 이스케이프가 사용됩니다. 작업 환경이 POSIX 호환 셸을 사용하는 경우 이를 활성화해야 합니다. |
|
FF_RESOLVE_FULL_TLS_CHAIN |
false |
[dotted-circle] No | GitLab Runner 16.4 이상에서는 기본값이 false입니다. GitLab Runner 16.3 이하에서는 기본값이 true입니다. 활성화하면 Runner가 CI_SERVER_TLS_CA_FILE에 대해 자체 서명된 루트 인증서까지 전체 TLS 체인을 확인합니다. 이전에 libcurl v7.68.0 이전 버전 및 OpenSSL로 빌드된 Git 클라이언트의 경우 Git HTTPS 클론이 작동하도록 필요했습니다. 그러나 인증서 확인 프로세스는 이전 서명 알고리즘으로 서명된 루트 인증서를 거부하는 macOS와 같은 일부 운영 체제에서 실패할 수 있습니다. 인증서 확인이 실패하면 이 기능을 비활성화해야 할 수 있습니다. 이 기능 플래그는 [runners.feature_flags] 구성에서만 비활성화할 수 있습니다. |
|
FF_DISABLE_POWERSHELL_STDIN |
false |
[dotted-circle] No | 활성화하면 셸 및 사용자 정의 실행기의 PowerShell 스크립트가 stdin을 통해 전달하여 실행하는 대신 파일로 전달됩니다. 이는 작업의 allow_failure:exit_codes 키워드가 올바르게 작동하는 데 필요합니다. |
|
FF_USE_POD_ACTIVE_DEADLINE_SECONDS |
true |
[dotted-circle] No | 활성화하면 파드 activeDeadlineSeconds가 CI/CD 작업 타임아웃으로 설정됩니다. 이 플래그는 파드의 수명 주기에 영향을 줍니다. |
|
FF_USE_ADVANCED_POD_SPEC_CONFIGURATION |
false |
[dotted-circle] No | 활성화하면 사용자가 config.toml 파일에서 전체 파드 사양을 설정할 수 있습니다. 자세한 내용은 생성된 파드 사양 덮어쓰기 (실험적)를 참고하세요. |
|
FF_SET_PERMISSIONS_BEFORE_CLEANUP |
true |
[dotted-circle] No | 활성화하면 정리 중 삭제가 성공하도록 프로젝트 디렉터리의 디렉터리 및 파일에 대한 권한이 먼저 설정됩니다. | |
FF_SECRET_RESOLVING_FAILS_IF_MISSING |
true |
[dotted-circle] No | 활성화하면 값을 찾을 수 없는 경우 시크릿 확인이 실패합니다. | |
FF_PRINT_POD_EVENTS |
false |
[dotted-circle] No | 활성화하면 빌드 파드가 시작될 때까지 빌드 파드와 관련된 모든 이벤트가 출력됩니다. | |
FF_USE_GIT_BUNDLE_URIS |
true |
[dotted-circle] No | 활성화하면 Git transfer.bundleURI 구성 옵션이 true로 설정됩니다. 이 FF는 기본적으로 활성화되어 있습니다. Git 번들 지원을 비활성화하려면 false로 설정하세요. |
|
FF_USE_GIT_NATIVE_CLONE |
false |
[dotted-circle] No | 활성화하고 GIT_STRATEGY=clone인 경우, 프로젝트를 클론하기 위해 git-init(1) + git-fetch(1) 대신 git-clone(1) 명령이 사용됩니다. Git 버전 2.49 이상이 필요하며, 사용할 수 없는 경우 init + fetch로 폴백합니다. |
|
FF_USE_DUMB_INIT_WITH_KUBERNETES_EXECUTOR |
false |
[dotted-circle] No | 활성화하면 모든 스크립트를 실행하기 위해 dumb-init이 사용됩니다. 이를 통해 dumb-init이 헬퍼 및 빌드 컨테이너에서 첫 번째 프로세스로 실행될 수 있습니다. |
|
FF_USE_INIT_WITH_DOCKER_EXECUTOR |
false |
[dotted-circle] No | 활성화하면 Docker 실행기가 PID 1로 tini-init을 실행하는 --init 옵션으로 서비스 및 빌드 컨테이너를 시작합니다. |
|
FF_LOG_IMAGES_CONFIGURED_FOR_JOB |
false |
[dotted-circle] No | 활성화하면 Runner가 수신된 각 작업에 대해 정의된 이미지 및 서비스 이미지의 이름을 로깅합니다. | |
FF_USE_DOCKER_AUTOSCALER_DIAL_STDIO |
true |
[dotted-circle] No | 활성화되면(기본값) docker system stdio가 원격 Docker 데몬에 터널링하는 데 사용됩니다. 비활성화하면 SSH 연결의 경우 기본 SSH 터널이 사용되고 WinRM 연결의 경우 'fleeting-proxy' 헬퍼 바이너리가 먼저 배포됩니다. |
|
FF_CLEAN_UP_FAILED_CACHE_EXTRACT |
false |
[dotted-circle] No | 활성화하면 실패한 캐시 추출을 감지하고 남겨진 부분 캐시 내용을 정리하는 명령이 빌드 스크립트에 삽입됩니다. | |
FF_USE_WINDOWS_JOB_OBJECT |
false |
[dotted-circle] No | 활성화하면 Runner가 셸 및 사용자 정의 실행기로 Windows에서 생성하는 각 프로세스에 대해 작업 객체가 생성됩니다. 프로세스를 강제 종료하기 위해 Runner가 작업 객체를 닫습니다. 이를 통해 종료하기 어려운 프로세스의 종료가 개선될 것입니다. | |
FF_TIMESTAMPS |
true |
[dotted-circle] No | 비활성화하면 각 로그 추적 줄의 시작 부분에 타임스탬프가 추가되지 않습니다. | |
FF_DISABLE_AUTOMATIC_TOKEN_ROTATION |
false |
[dotted-circle] No | 활성화하면 자동 토큰 교체를 제한하고 토큰이 만료되려 할 때 경고를 로깅합니다. | |
FF_USE_LEGACY_GCS_CACHE_ADAPTER |
false |
[dotted-circle] No | 활성화하면 레거시 GCS 캐시 어댑터가 사용됩니다. 비활성화하면(기본값) 인증에 Google Cloud Storage의 SDK를 사용하는 최신 GCS 캐시 어댑터가 사용됩니다. 이를 통해 GKE의 워크로드 ID 구성과 같이 레거시 어댑터가 어려움을 겪었던 환경의 인증 문제가 해결될 것입니다. | |
FF_DISABLE_UMASK_FOR_KUBERNETES_EXECUTOR |
false |
[dotted-circle] No | 활성화하면 Kubernetes 실행기로 실행되는 작업에 대해 umask 0000 호출이 제거됩니다. 대신 Runner는 빌드 컨테이너가 실행되는 사용자의 사용자 ID(UID)와 그룹 ID(GID)를 검색하려고 시도합니다. 또한 미리 정의된 컨테이너에서 chown 명령을 실행하여 작업 디렉터리 및 파일의 소유권을 변경합니다(소스 업데이트, 캐시 복원 및 아티팩트 다운로드 후). |
|
FF_USE_LEGACY_S3_CACHE_ADAPTER |
false |
[dotted-circle] No | 활성화하면 레거시 S3 캐시 어댑터가 사용됩니다. 비활성화하면(기본값) 인증에 Amazon의 S3 SDK를 사용하는 최신 S3 캐시 어댑터가 사용됩니다. 이를 통해 사용자 정의 STS 엔드포인트와 같이 레거시 어댑터가 어려움을 겪었던 환경의 인증 문제가 해결될 것입니다. | |
FF_GIT_URLS_WITHOUT_TOKENS |
false |
[dotted-circle] No | 활성화하면 GitLab Runner가 Git 구성 또는 명령 실행 중에 작업 토큰을 어디에도 삽입하지 않습니다. 대신 환경 변수를 사용하여 작업 토큰을 얻는 Git 자격 증명 헬퍼를 설정합니다. 이 방법은 토큰 저장을 제한하고 토큰 유출 위험을 줄입니다. | |
FF_WAIT_FOR_POD_TO_BE_REACHABLE |
false |
[dotted-circle] No | 활성화하면 Runner가 파드 상태가 '실행 중'이 되고 인증서가 첨부된 상태로 준비될 때까지 기다립니다. 자세한 내용은 runner API 권한 구성을 참조하십시오. | |
FF_MASK_ALL_DEFAULT_TOKENS |
true |
[dotted-circle] No | 활성화하면 GitLab Runner가 모든 기본 토큰 패턴을 자동으로 마스킹합니다. | |
FF_EXPORT_HIGH_CARDINALITY_METRICS |
false |
[dotted-circle] No | 활성화하면 Runner가 높은 카디널리티를 가진 메트릭을 내보냅니다. 대량의 데이터 수집을 방지하기 위해 이 기능 플래그를 활성화할 때 특별한 주의가 필요합니다. 자세한 내용은 플릿 스케일링을 참고하세요. | |
FF_USE_FLEETING_ACQUIRE_HEARTBEATS |
false |
[dotted-circle] No | 활성화하면 작업이 인스턴스에 할당되기 전에 fleeting 인스턴스 연결이 확인됩니다. | |
FF_USE_EXPONENTIAL_BACKOFF_STAGE_RETRY |
true |
[dotted-circle] No | 활성화하면 GET_SOURCES_ATTEMPTS, ARTIFACT_DOWNLOAD_ATTEMPTS, RESTORE_CACHE_ATTEMPTS 및 EXECUTOR_JOB_SECTION_ATTEMPTS에 대한 재시도가 지수 백오프(5초 - 5분)를 사용합니다. |
|
FF_USE_ADAPTIVE_REQUEST_CONCURRENCY |
true |
[dotted-circle] No | 활성화하면 request_concurrency 설정이 최대 동시성 값이 되고 성공적인 작업 요청 비율에 따라 동시 요청 수가 조정됩니다. |
|
FF_USE_GITALY_CORRELATION_ID |
true |
[dotted-circle] No | 활성화하면 모든 Git HTTP 요청에 X-Gitaly-Correlation-ID 헤더가 추가됩니다. 비활성화하면 Git 작업이 Gitaly Correlation ID 헤더 없이 실행됩니다. |
|
FF_USE_GIT_PROACTIVE_AUTH |
false |
[dotted-circle] No | 활성화하면 Runner가 git clone 및 git fetch 명령에 http.proactiveAuth=basic Git 구성 옵션을 전달합니다. 결과적으로 Git은 401 응답을 기다리지 않고 자동으로 자격 증명을 전송합니다. 이 동작은 공개 프로젝트의 경우 사용자 이름이 Gitaly에 전파되도록 합니다. |
|
FF_HASH_CACHE_KEYS |
false |
[dotted-circle] No | GitLab Runner가 캐시를 생성하거나 추출할 때 로컬 및 분산 캐시(예: S3) 모두에 대해 캐시 키를 사용하기 전에 해시(SHA256)합니다. 자세한 내용은 캐시 키 처리를 참고하세요. | |
FF_ENABLE_JOB_INPUTS_INTERPOLATION |
true |
[dotted-circle] No | 활성화하면 작업 입력이 보간됩니다. 자세한 내용은 &17833을 참고하세요. | |
FF_USE_JOB_ROUTER |
false |
[dotted-circle] No | GitLab Runner가 GitLab에 직접 연결하는 대신 Job Router에 연결하여 작업을 가져오도록 합니다. | |
FF_SCRIPT_TO_STEP_MIGRATION |
false |
[dotted-circle] No | 활성화하면 사용자 스크립트가 단계로 마이그레이션되어 step-runner로 실행됩니다. | |
FF_CONCRETE |
false |
[dotted-circle] No | 활성화하면 기존 스크립트 실행이 step-runner로 마이그레이션되어 실행됩니다. | |
FF_USE_PARALLEL_CACHE_TRANSFER |
false |
[dotted-circle] No | 활성화하면 캐시 업로드 및 다운로드가 병렬 오브젝트 스토리지 전송을 사용합니다: GoCloud 쓰기는 동시 파트를 사용한 멀티파트를 사용하고, 다운로드는 동시 HTTP Range 또는 GoCloud 범위 읽기를 사용합니다. 비활성화하면 업로드는 단일 동시 파트 스트림을 사용하고 다운로드는 하나의 스트림을 사용합니다. 활성화하면 고대역폭 링크에서 처리량이 향상됩니다. CACHE_CONCURRENCY 및 CACHE_CHUNK_SIZE로 조정하세요. |
|
FF_USE_PARALLEL_ARTIFACT_TRANSFER |
false |
[dotted-circle] No | 활성화하면 direct_download를 사용하고 오브젝트 스토리지로 리디렉션을 받는 아티팩트 다운로드가 백엔드가 Content-Range 총합과 함께 206 Partial Content를 지원할 때 병렬 HTTP Range GET을 사용할 수 있습니다. 비활성화하면 단일 다운로드 스트림이 사용됩니다. 청크 크기와 동시성은 runner에서 고정됩니다(CACHE_* 변수가 아님). |
|
FF_SUSPENDABLE_ENVIRONMENTS |
false |
[dotted-circle] No | 활성화하면 작업 환경을 일시 중지하거나 재개할 수 있습니다. |
파이프라인 구성에서 기능 플래그 활성화#
CI/CD 변수를 사용하여 기능 플래그를 활성화할 수 있습니다:
-
파이프라인의 모든 작업(전역적으로):
variables: FEATURE_FLAG_NAME: 1 -
단일 작업:
job: stage: test variables: FEATURE_FLAG_NAME: 1 script: - echo "Hello"
Runner 환경 변수에서 기능 플래그 활성화#
Runner가 실행하는 모든 작업에 대해 기능을 활성화하려면 Runner 구성의 environment 변수로 기능 플래그를 지정합니다:
[[runners]]
name = "example-runner"
url = "https://gitlab.com/"
token = "TOKEN"
limit = 0
executor = "docker"
builds_dir = ""
shell = ""
environment = ["FEATURE_FLAG_NAME=1"]
Runner 구성에서 기능 플래그 활성화#
[runners.feature_flags] 아래에 기능 플래그를 지정하여 활성화할 수 있습니다. 이 설정은 어떤 작업도 기능 플래그 값을 재정의하지 못하도록 방지합니다.
일부 기능 플래그는 작업 실행 방식을 다루지 않기 때문에 이 설정을 구성할 때만 사용할 수 있습니다.
[[runners]]
name = "example-runner"
url = "https://gitlab.com/"
token = "TOKEN"
executor = "docker"
[runners.feature_flags]
FF_USE_DIRECT_DOWNLOAD = true
