최대 1 분 소요

gitlab-ci.yml 파일을 바탕으로 GitLab에서 사용하는 경우 주로 CI/CD 파이프라인을 정의하는 방법에 대해 다룹니다.

stages

  • 파이프라인의 순서를 명시적으로 지정합니다.
  • 동일한 stage의 job은 병렬 실행하며, stage 간은 순차 실행합니다.
stages:
- build
- test

variables

  • 상위 키워드로 지정 시 모든 job의 환경 변수로 적용합니다.
  • 특정 job 안에 지정 시 해당 job에서만 적용합니다.

예시

variables:
  GIT_SUBMODULE_STRATEGY: recursive
  • ` GIT_SUBMODULE_STRATEGY: recursive`
    • 모든 job 실행 전에 GitLab Runner가 서브모듈 전체를 재귀적으로 업데이트합니다.

workflow

  • 파이프라인 자체를 실행할지 말지를 결정하는 전역 조건을 정의합니다.
  • rule 과 함께 쓰여서 파이프라인 실행 조건을 제어합니다.
workflow:
  rules:
    - if: <조건>
      when: <동작>

예시

workflow:
  rules:
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    - if: $CI_COMMIT_TAG
    - if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS
      when: never
    - if: $CI_COMMIT_BRANCH
  • if: $CI_PIPELINE_SOURCE == "merge_request_event"
    • MR(Merge Request) 생성/업데이트 시 파이프라인 실행합니다.
  • ` if: $CI_COMMIT_TAG`
    • 릴리즈 태그 푸시 시 실행합니다.
  • if: $CI_COMMIT_BRANCH && $CI_OPEN_MERGE_REQUESTS when: never
    • 브랜치에서 작업 중인데 이미 MR이 열려 있으면, 이 브랜치 push 시 파이프라인 생성을 막습니다.
  • if: $CI_COMMIT_BRANCH
    • MR이 없더라도 브랜치에 커밋이 푸시되면 실행합니다.

build

  • 소스코드를 빌드하거나, 컨테이너 이미지를 빌드하는 단계입니다.
  • build 결과물은 artifacts로 저장해 다음 stage의 job에서 재사용할 수 있습니다.

default

  • 모든 job에 적용할 기본 설정을 정의합니다.

카테고리:

업데이트: