GitLab CI/CD 파이프라인

GitLab CI/CD 파이프라인 (Pipelines)

파이프라인은 GitLab CI/CD의 전체 흐름을 담는 최상위 개념이에요. 코드를 빌드하고, 테스트하고, 배포하는 모든 단계가 하나의 파이프라인 안에서 이어집니다. 파이프라인은 .gitlab-ci.yml 파일로 정의하고, 코드를 푸시하거나 스케줄, 다른 파이프라인 등으로 트리거해 실행해요.

출처: GitLab Docs — CI/CD pipelines

파이프라인을 이루는 세 가지

파이프라인은 크게 세 가지로 구성돼요.

  • 전역 YAML 키워드: 프로젝트 파이프라인의 전체 동작을 제어하는 키워드예요.
  • 잡 (Jobs): 명령을 실행해 한 가지 일을 끝내는 실행 단위예요. 컴파일, 테스트, 배포 같은 일이 각각 하나의 잡이죠. 잡은 서로 독립적으로 돌고, 러너가 실행합니다.
  • 스테이지 (Stages): 잡을 어떻게 묶을지 정의하는 그룹이에요. 스테이지는 순서대로 실행되고, 같은 스테이지 안의 잡들은 병렬로 돌 수 있어요.

예를 들어 초반 스테이지에는 코드를 lint하고 컴파일하는 잡을, 뒤쪽 스테이지에는 테스트하고 배포하는 잡을 둘 수 있죠. 한 스테이지의 잡이 전부 성공해야 다음 스테이지로 넘어가요. 반대로 스테이지 안의 어떤 잡이라도 실패하면 다음 스테이지는 실행되지 않습니다.

스테이지 순서 예시

buildtestdeploy처럼 세 스테이지를 구성한다고 생각해 볼게요.

  • build 스테이지에 compile이라는 잡을 두고 프로젝트 코드를 컴파일합니다.
  • test 스테이지에 test1, test2 두 잡을 두고 코드를 검증해요. 이 테스트 잡들은 compile이 성공한 뒤에만 실행됩니다.
  • deploy 스테이지에 deploy-to-production 잡이 배포를 담당하죠.

이렇게 스테이지 단위로 순서를 강제하면, 빌드가 실패한 코드를 테스트하거나 배포하는 일이 없어져요.

파이프라인 구성하기

.gitlab-ci.yml 최상위에 잡을 정의하면 파이프라인에 포함됩니다. 잡을 추가할 때 잡의 이름은 YAML에서 고유해야 하고, 파이프라인 트리거 방식에 따라 수동 버튼을 넣을 수도 있어요. 파이프라인이 더 이상 필요 없으면 삭제할 수 있는데, 파이프라인을 삭제하면 관련된 모든 캐시와 잡, 로그, 아티팩트, 트리거가 함께 사라지니 되돌릴 수 없다는 점을 명심하세요.

파이프라인 보기

파이프라인 세부 페이지에서는 잡을 스테이지 기준으로 묶어 보거나, needs 키워드로 연결된 잡 의존성 기준으로 묶어 볼 수 있어요. needs는 잡 사이의 의존 관계를 직접 지정하는 키워드예요.

예를 들어 lint-jobneeds: []로 설정돼 아무 잡에도 의존하지 않는다면, 스테이지상으로는 test에 있어도 첫 번째 열에 표시됩니다. 반면 test-job1build-job1에, test-job2build-job1build-job2 둘 다에 의존한다면 두 테스트 잡은 두 번째 열에 뜨죠.

파이프라인 미니 그래프는 항상 스테이지 기준으로 잡을 묶어 보여줘요. 각 스테이지에 마우스를 올리면 이름과 상태가 보이고, 스테이지를 누르면 그 안의 잡 목록이 펼쳐집니다.

더 알아보기