CI/CD 표현식
CI/CD 표현식은 특수한 컨텍스트에서 변수와 inputs를 참조하여 CI/CD 파이프라인의 동적 구성을 가능하게 합니다. 구성 표현식은 $[[ ]] 구문을 사용하며 파이프라인 생성 시(컴파일 시점)에 평가됩니다. 모든 구성 표현식은 다음 특성을 공유합니다:
CI/CD 표현식은 특수한 컨텍스트에서 변수와 inputs를 참조하여 CI/CD 파이프라인의 동적 구성을 가능하게 합니다. GitLab은 파이프라인이 생성되기 전에 파이프라인 구성에서 표현식을 평가합니다.
구성 표현식#
구성 표현식은 $[[ ]] 구문을 사용하며 파이프라인 생성 시(컴파일 시점)에 평가됩니다.
다양한 컨텍스트를 기반으로 동적 구성을 활성화합니다.
모든 구성 표현식은 다음 특성을 공유합니다:
- 컴파일 시점 평가: 값은 파이프라인 구성이 생성될 때 확인되며, 작업 실행 중이 아닙니다. 많은 수의 표현식은 파이프라인 생성 시간을 늘릴 수 있지만 작업 실행 시간에는 영향을 미치지 않습니다.
- 정적 확인: 동적 로직을 수행하거나 런타임 작업 상태에 접근할 수 없습니다.
구성 표현식은 값에 접근하기 위한 다양한 컨텍스트를 지원합니다:
| 컨텍스트 | 구문 | 가용성 | 목적 |
|---|---|---|---|
| Inputs 컨텍스트 | $[[ inputs.INPUT_NAME ]] |
GitLab 17.0 | 재사용 가능한 구성에서 CI/CD inputs 참조. |
| Matrix 컨텍스트 | $[[ matrix.IDENTIFIER ]] |
GitLab 18.6 (Beta) | 작업 의존성에서 parallel:matrix 식별자 참조. |
| Component 컨텍스트 | $[[ component.FIELD_NAME ]] |
GitLab 18.6 (Beta) | 컴포넌트 템플릿에서 컴포넌트 메타데이터 참조. |
Inputs 컨텍스트#
inputs. 컨텍스트를 사용하여 $[[ inputs.INPUT_NAME ]] 구문으로 재사용 가능한 구성에서 CI/CD inputs를 참조합니다.
예를 들어:
spec:
inputs:
environment:
default: production
job-stage:
default: test
---
scan-website:
stage: $[[ inputs.job-stage ]]
script: ./scan-website $[[ inputs.environment ]]
input. 표현식은 다음 특성이 있습니다:
- 타입 유효성 검사: 유효성 검사와 함께
string,number,boolean,array타입을 지원합니다. Input 유효성 검사는 잘못된 값으로 파이프라인이 생성되는 것을 방지합니다. - 함수 지원:
expand_vars와truncate와 같은 사전 정의된 함수로 값을 조작할 수 있습니다. - 범위: 정의된 파일에서 사용 가능하거나
include:inputs로 명시적으로 전달됩니다.
Matrix 컨텍스트#
matrix. 컨텍스트를 사용하여 $[[ matrix.IDENTIFIER ]] 구문으로 parallel:matrix 값을 참조합니다. 작업 의존성에서 parallel:matrix 작업 간의 동적 1:1 매핑을 가능하게 하는 데 사용합니다.
예를 들어:
.os-arch-matrix:
parallel:
matrix:
- OS: [ubuntu, alpine]
ARCH: [amd64, arm64]
build:
script: echo "Testing $OS on $ARCH"
parallel: !reference [.os-arch-matrix, parallel]
test:
script: echo "Testing $OS on $ARCH"
parallel: !reference [.os-arch-matrix, parallel]
needs:
- job: build
parallel:
matrix:
- OS: ['$[[ matrix.OS ]]']
ARCH: ['$[[ matrix.ARCH ]]']
matrix. 표현식은 다음 특성이 있습니다:
- 작업 수준
parallel:matrix로 범위 지정: 현재 작업의 값만 참조할 수 있습니다. - 자동 매핑: 스테이지 간 매트릭스 작업 사이에 1:1 의존성을 생성합니다.
Component 컨텍스트#
히스토리
component. 컨텍스트를 사용하여 $[[ component.FIELD_NAME ]] 구문으로 컴포넌트 템플릿에서 CI/CD 컴포넌트 메타데이터를 참조합니다.
Component 컨텍스트는 컴포넌트 자체에 대한 메타데이터(이름, 버전, 커밋 SHA 등)를 제공합니다. 이를 통해 컴포넌트 템플릿은 자체 메타데이터를 동적으로 참조할 수 있습니다.
Component 컨텍스트를 사용하려면 spec:component 헤더에서 필요한 필드를 선언한 다음 컴포넌트 템플릿에서 참조합니다.
예를 들어:
spec:
component: [name, version]
inputs:
stage:
default: build
---
build-job:
stage: $[[ inputs.stage ]]
image: registry.example.com/$[[ component.name ]]:$[[ component.version ]]
script:
- echo "Building with component version $[[ component.version ]]"
