러너
러너 (Runners)
러너는 파이프라인 안의 GitLab CI/CD 잡을 실제로 실행해 주는 에이전트예요. GitLab Runner 애플리케이션이 동작하는 곳이며, .gitlab-ci.yml 파일에 정의된 빌드·테스트·배포 및 각종 CI/CD 태스크를 수행합니다.
러너 실행 흐름
러너가 잡을 실행하기까지의 흐름을 순서대로 보면 이래요.
- 러너를 먼저 GitLab에 등록해야 해요. 등록하면 러너와 GitLab 사이에 지속적인 연결이 생깁니다.
- 파이프라인이 트리거되면 GitLab이 등록된 러너들이 처리할 수 있도록 잡을 내보내요.
- 조건에 맞는 러너가 잡을 가져가서 실행합니다. 러너 하나당 잡 하나를 처리하죠.
- 실행 결과가 실시간으로 GitLab에 보고돼요.
잡 스케줄링과 실행
CI/CD 잡이 실행되어야 할 때 GitLab은 .gitlab-ci.yml에 정의된 태스크를 바탕으로 잡을 만들고 대기열에 넣어요. 그러면 GitLab이 다음 조건이 맞는 사용 가능한 러너를 찾습니다.
- 러너 태그 (Runner tags)
- 러너 유형 (공유·그룹 등)
- 러너 상태와 용량
- 필요로 하는 기능 지원 여부
잡을 배정받은 러너는 실행 환경을 준비하고 .gitlab-ci.yml에 지정된 명령을 수행해요.
러너 유형
잡을 실행할 러너를 고를 때는 크게 두 갈래로 나눌 수 있어요.
- GitLab 호스팅 러너: GitLab.com이나 GitLab Dedicated 사용자를 위한 러너예요.
- 자체 관리 (Self-managed) 러너: 모든 GitLab 설치 환경에서 쓸 수 있는 러너죠.
러너는 범위에 따라 그룹 러너, 프로젝트 러너, 인스턴스 러너로 나뉘는데, GitLab 호스팅 러너는 인스턴스 러너에 속합니다.
GitLab 호스팅 러너
GitLab이 완전히 관리하는 러너예요. 별도 설정 없이 바로 쓸 수 있고, 잡마다 새 VM에서 실행되며, Linux·Windows·macOS 옵션을 제공해요. 수요에 따라 자동으로 스케일링되죠. 유지보수가 필요 없는 CI/CD를 원하거나, 인프라 관리 없이 빠르게 셋업하고 싶을 때, 실행 간 격리가 필요한 표준 빌드 환경이라면 호스팅 러너가 좋은 선택이에요.
자체 관리 러너
직접 설치하고 관리하는 러너예요. 자기 인프라 위에서 돌고 필요에 따라 커스터마이즈할 수 있으며, Shell·Docker·Kubernetes 등 다양한 실행기(executor)를 지원합니다. 특정 프로젝트나 그룹에 한정해 쓰게 할 수도 있어요. 사용자 정의 구성이 필요하거나, 사내망 안에서 잡을 돌리거나, 세밀한 보안 제어가 필요할 때, 프로젝트·그룹 러너가 필요할 때, 러너 재사용으로 속도를 최적화하고 싶을 때 자체 관리 러너를 씁니다.