CI/CD 파이프라인을 정의 (gitlab)
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에 적용할 기본 설정을 정의합니다.