InfoGrab Docs

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_varstruncate와 같은 사전 정의된 함수로 값을 조작할 수 있습니다.
  • 범위: 정의된 파일에서 사용 가능하거나 include:inputs로 명시적으로 전달됩니다.

Matrix 컨텍스트#

히스토리
  • GitLab 18.6에서 도입되었습니다. 이 기능은 베타 상태입니다.

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 컨텍스트#

히스토리
  • GitLab 18.6에서 ci_component_context_interpolation이라는 플래그와 함께 베타도입되었습니다. 기본적으로 활성화되어 있습니다.
  • GitLab 18.7에서 일반 사용 가능이 되었습니다. 기능 플래그 ci_component_context_interpolation이 제거되었습니다.

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 ]]"

관련 주제#

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_varstruncate와 같은 사전 정의된 함수로 값을 조작할 수 있습니다.
  • 범위: 정의된 파일에서 사용 가능하거나 include:inputs로 명시적으로 전달됩니다.

Matrix 컨텍스트#

히스토리
  • GitLab 18.6에서 도입되었습니다. 이 기능은 베타 상태입니다.

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 컨텍스트#

히스토리
  • GitLab 18.6에서 ci_component_context_interpolation이라는 플래그와 함께 베타도입되었습니다. 기본적으로 활성화되어 있습니다.
  • GitLab 18.7에서 일반 사용 가능이 되었습니다. 기능 플래그 ci_component_context_interpolation이 제거되었습니다.

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 ]]"

관련 주제#