플로우 실행 변수
GitLab v19.3Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
요약
플로우를 실행하는 잡에서 모든 변수를 사용할 수 있는 것은 아닙니다. 일부 미리 정의된 변수와 Agent Platform 전용 변수를 사용할 수 있습니다. 필터링된 미리 정의된 변수, 사용자 지정 CI/CD 변수, 사용자 아이덴티티 변수는 사용할 수 없습니다.
플로우를 실행하는 잡에서 모든 변수를 사용할 수 있는 것은 아닙니다.
-
일부 미리 정의된 변수와 Agent Platform 전용 변수를 사용할 수 있습니다.
-
필터링된 미리 정의된 변수, 사용자 지정 CI/CD 변수, 사용자 아이덴티티 변수는 사용할 수 없습니다.
사용 가능한 변수#
플로우를 실행하는 잡에서 다음 변수를 사용할 수 있습니다.
미리 정의된 변수#
다음 미리 정의된 CI/CD 변수를 사용할 수 있습니다:
| 변수 | 설명 |
|---|---|
| CI_PROJECT_ID | 프로젝트 ID. |
| CI_PROJECT_NAME | 프로젝트 이름. |
| CI_PROJECT_PATH | 네임스페이스를 포함한 프로젝트 경로. |
| CI_PROJECT_URL | 프로젝트 HTTP URL. |
| CI_PROJECT_NAMESPACE | 프로젝트 네임스페이스. |
| CI_PROJECT_VISIBILITY | 프로젝트 공개 범위(public, internal 또는 private). |
| CI_DEFAULT_BRANCH | 기본 브랜치 이름. |
| CI_JOB_ID | 잡 ID. |
| CI_JOB_URL | 잡 URL. |
| CI_JOB_TOKEN | 잡 인증 토큰. |
| CI_JOB_IMAGE | 잡에 사용된 Docker 이미지. |
| CI_JOB_STATUS | 잡 상태. |
| CI_JOB_TIMEOUT | 잡 시간 제한(초). |
| CI_JOB_STARTED_AT | ISO 8601 형식의 잡 시작 타임스탬프. |
| CI_PIPELINE_ID | 파이프라인 ID. |
| CI_PIPELINE_URL | 파이프라인 URL. |
| CI_REGISTRY_USER | 컨테이너 레지스트리 사용자 이름(gitlab-ci-token). |
| CI_REGISTRY_PASSWORD | 컨테이너 레지스트리 비밀번호(잡 토큰). |
| CI_DEPENDENCY_PROXY_USER | 종속성 프록시 사용자 이름. |
| CI_DEPENDENCY_PROXY_PASSWORD | 종속성 프록시 비밀번호. |
| CI_REPOSITORY_URL | 자격 증명이 포함된 Git 클론 URL. |
| CI_RUNNER_VERSION | 러너 버전. |
| CI_RUNNER_EXECUTABLE_ARCH | 러너 아키텍처(예: linux/amd64). |
| CI_SERVER | CI/CD 환경에서는 항상 yes. |
| CI_WORKLOAD_REF | 플로우 실행에 대한 워크로드 참조(예: refs/workloads/c727f70ba7f). 이는 내부 Git 참조이며 파이프라인 잡이 완료되거나 실패하면 자동으로 제거됩니다. |
환경 변수#
다음 환경 변수는 Agent Platform 전용입니다.
이 변수들은 setup_script와 기본 에이전트 런타임 모두에서 사용할 수 있습니다.
이 표는 주요 변수를 문서화합니다. 추가적인 내부 변수(예: 디버그 플래그 및 텔레메트리 식별자)도 실행 컨테이너에 존재할 수 있지만, 플로우 구성에 사용하도록 의도된 것은 아닙니다.
| 변수 | 설명 | 예시 |
|---|---|---|
| DUO_WORKFLOW_GIT_HTTP_BASE_URL | GitLab 인스턴스 기본 URL. CI_SERVER_URL 대신 이 변수를 사용합니다. | https://gitlab.com |
| DUO_WORKFLOW_PROJECT_ID | 프로젝트 ID. CI_PROJECT_ID와 동일한 값. | 77056053 |
| DUO_WORKFLOW_NAMESPACE_ID | 네임스페이스 ID. | 91555435 |
| DUO_WORKFLOW_GOAL | 플로우를 트리거한 이슈의 URL. | https://gitlab.com/group/project/-/issues/10 |
| DUO_WORKFLOW_DEFINITION | 플로우 정의 식별자. | developer/v1 |
| DUO_WORKFLOW_SERVICE_REALM | 배포 유형. | saas 또는 self-managed |
| DUO_WORKFLOW_GIT_HTTP_USER | 클론에 사용하는 Git HTTP 사용자 이름. | oauth |
| DUO_WORKFLOW_GIT_HTTP_PASSWORD | 클론에 사용하는 Git HTTP 비밀번호. | (OAuth 토큰) |
| DUO_WORKFLOW_GIT_USER_NAME | 플로우를 트리거한 사용자의 이름. Git 커미터로 사용됩니다. | Jane Developer |
| DUO_WORKFLOW_GIT_USER_EMAIL | 플로우를 트리거한 사용자의 이메일. Git 커미터 이메일로 사용됩니다. | jdeveloper@example.com |
| DUO_WORKFLOW_GIT_AUTHOR_EMAIL | 서비스 계정의 이메일. Git 작성자 이메일로 사용됩니다. | service_account_group_@noreply.gitlab.com |
| DUO_WORKFLOW_GIT_AUTHOR_USER_NAME | 서비스 계정의 이름. Git 작성자 이름으로 사용됩니다. | Duo Developer |
| GITLAB_BASE_URL | GitLab 인스턴스 기본 URL. DUO_WORKFLOW_GIT_HTTP_BASE_URL과 동일한 값. | https://gitlab.com |
| GITLAB_PROJECT_PATH | 네임스페이스를 포함한 프로젝트 전체 경로. CI_PROJECT_PATH와 동일한 값. | my-group/my-project |
| GITLAB_TOKEN | GitLab API 액세스를 위한 OAuth 토큰. DUO_WORKFLOW_GIT_HTTP_PASSWORD와 동일한 값. | (OAuth 토큰) |
| AGENT_PLATFORM_GITLAB_VERSION | 플로우를 실행하는 GitLab 버전. | 18.9.0 |
ID 토큰 변수#
히스토리
- GitLab 19.2에서 도입.
선언한 ID 토큰은 플로우 잡에서 환경 변수로 사용할 수 있습니다. 각 변수는 선언한 토큰의 이름을 사용합니다.
ID 토큰은 다음에서 선언합니다:
-
CI/CD를 사용하는 플로우의 경우
agent-config.yml파일. 자세한 내용은 ID 토큰 구성을 참조하세요. -
사용자 지정 외부 에이전트의 구성.
예를 들어 VAULT_ID_TOKEN 토큰으로 id_tokens 블록을 선언하면
플로우에서 $VAULT_ID_TOKEN을 사용할 수 있습니다.
사용할 수 없는 변수#
플로우를 실행하는 잡에서 다음 변수는 사용할 수 없습니다.
필터링된 미리 정의된 변수#
다음 미리 정의된 CI/CD 변수는 사용할 수 없습니다:
| 변수 | 이유 |
|---|---|
| CI_REGISTRY | 워크로드 변수 게이트에 의해 필터링됩니다. 대신 하드코딩된 레지스트리 호스트 이름을 사용하세요. |
| CI_REGISTRY_IMAGE | 워크로드 변수 게이트에 의해 필터링됩니다. 대신 하드코딩된 이미지 경로를 사용하세요. |
| CI_SERVER_URL, CI_SERVER_HOST, CI_API_V4_URL | 필터링됩니다. 대신 GITLAB_BASE_URL 또는 DUO_WORKFLOW_GIT_HTTP_BASE_URL을 사용하세요. |
| CI_COMMIT_SHA, CI_COMMIT_BRANCH, CI_COMMIT_REF_NAME | 잡에 커밋 컨텍스트가 없습니다. 소스 브랜치는 GitLab Duo 에이전트가 관리합니다. |
| GITLAB_USER_LOGIN, GITLAB_USER_EMAIL, GITLAB_USER_NAME | 잡은 트리거한 사용자가 아니라 서비스 계정으로 실행됩니다. |
| CI_PIPELINE_SOURCE, CI_PIPELINE_IID | 워크로드 변수 게이트에 의해 필터링됩니다. |
사용자 아이덴티티#
플로우 실행 중에 사용되는 CI 잡 토큰은 트리거한 사용자와 서비스 계정을 모두 나타내는 복합 아이덴티티(composite identity) 토큰입니다.
플로우 실행 중에 생성된 Git 커밋은 플로우를 트리거한 사용자가 커밋하지만 작성자는 서비스 계정으로 표시됩니다.
사용자가 아니라 서비스 계정이 플로우를 실행하므로
GITLAB_USER_LOGIN 및 GITLAB_USER_EMAIL 변수는 사용할 수 없습니다.
다만 플로우를 트리거한 사용자의 아이덴티티는
DUO_WORKFLOW_GIT_USER_EMAIL과 DUO_WORKFLOW_GIT_USER_NAME에서 사용할 수 있고,
서비스 계정 아이덴티티는
DUO_WORKFLOW_GIT_AUTHOR_EMAIL과 DUO_WORKFLOW_GIT_AUTHOR_USER_NAME에서 사용할 수 있습니다.
사용자 지정 CI/CD 변수#
프로젝트, 그룹 또는 인스턴스에 대해 설정 > CI/CD > 변수에서 정의한 사용자 지정 CI/CD 변수는 사용할 수 없습니다.
사용자 지정 CI/CD 변수에는 보호된 변수, 보호되지 않은 변수, 마스킹된 변수, 파일 변수가 포함됩니다.
모든 플로우 구성은 agent-config.yml 또는
사용 가능한 환경 변수를 통해 제공해야 합니다.
GitLab 인스턴스 URL 액세스#
표준 CI_SERVER_URL 변수는 사용할 수 없습니다. 대신
GITLAB_BASE_URL 또는 DUO_WORKFLOW_GIT_HTTP_BASE_URL을 사용합니다.
예를 들어 setup_script에서 API를 호출하려면 다음과 같이 합니다:
setup_script:
- "curl --silent --header 'JOB-TOKEN: ${CI_JOB_TOKEN}' ${GITLAB_BASE_URL}/api/v4/projects/${CI_PROJECT_ID}"