GitLab Runner

티어: Free, Premium, Ultimate 오퍼링: GitLab.com, Self-managed

GitLab Runner은 GitLab CI/CD와 함께 파이프라인에서 작업을 실행하는 애플리케이션입니다.

GitLab 호스팅 러너 사용

GitLab.com이나 GitLab Dedicated를 사용하는 경우 GitLab 호스팅 러너에서 CI/CD 작업을 실행할 수 있습니다. 이러한 러너는 GitLab에서 관리되며 GitLab.com과 완전히 통합되어 있습니다. 기본적으로 이러한 러너는 모든 프로젝트에 대해 활성화되어 있습니다. 프로젝트의 소유자 역할을 가지고 있다면 러너를 비활성화할 수 있습니다.

Self-managed 러너 사용

티어: Free, Premium, Ultimate 오퍼링: Self-managed

또한, GitLab Runner를 설치하고 GitLab.com이나 자체 인스턴스에 자체 러너를 등록할 수 있습니다. Self-managed 러너를 사용하려면 귀하가 소유하거나 관리하는 인프라에 GitLab Runner를 설치해야 합니다.

러너 플리트 확장

귀하의 조직이 러너 플리트로 확장되면, 이러한 러너의 성능을 모니터링하고 조정하는 방법에 대해 계획해야 합니다.

GitLab Runner 버전

호환성을 위해, GitLab Runner의 major.minor 버전은 GitLab의 major 및 minor 버전과 동기화되어야 합니다. 이전 러너는 최신 GitLab 버전과 호환될 수 있고 그 반대의 경우도 마찬가지입니다. 그러나 버전 차이가 있는 경우 기능이 제공되지 않거나 제대로 작동하지 않을 수 있습니다.

역 호환성은 minor 버전 업데이트 사이에서 보장되지만 때로는 GitLab의 minor 버전 업데이트가 GitLab Runner가 동일한 minor 버전을 필요로 하는 새로운 기능을 도입할 수 있습니다.

참고: GitLab Runner 15.0은 등록 API 요청 형식을 변경했습니다. 이것은 GitLab Runner가 14.8 보다 낮은 GitLab 버전과 통신하는 것을 방지합니다. GitLab 버전에 적합한 Runner 버전을 사용하거나 GitLab 애플리케이션을 업그레이드해야 합니다.

만약 귀하가 자체 러너를 호스팅하지만 저장소를 GitLab.com에서 호스팅하는 경우, GitLab Runner를 최신 버전으로 업데이트하여야 합니다. GitLab.com은 지속적으로 업데이트됩니다.

러너 등록

애플리케이션을 설치한 후, 러너를 등록합니다. 러너는 GitLab에서 온 CI/CD 작업을 실행하는 에이전트입니다.

러너를 등록하면 GitLab 인스턴스와 GitLab Runner가 설치된 머신 간의 통신이 설정됩니다.

보통 러너는 GitLab Runner를 설치한 동일한 기계에서 작업을 처리합니다. 그러나 러너를 컨테이너, Kubernetes 클러스터 또는 클라우드의 자동 스케일링 인스턴스에서 작업을 처리할 수도 있습니다.

Executors

러너를 등록할 때 실행자를 선택해야 합니다.

Executor는 각 작업이 실행되는 환경을 결정합니다.

예를 들어:

  • CI/CD 작업을 PowerShell 명령으로 실행하려면 Windows 서버에 GitLab Runner를 설치한 다음 쉘 실행자를 사용하는 러너를 등록해야 합니다.
  • 사용자 지정 Docker 컨테이너에서 명령을 실행하려면 Linux 서버에 GitLab Runner를 설치하고 Docker 실행자를 사용하는 러너를 등록해야 합니다.

이것들은 가능한 구성 중 일부에 불과합니다. 귀하는 GitLab Runner를 가상 머신에 설치하고 다른 가상 머신을 실행자로 사용할 수 있습니다.

Docker 컨테이너에 GitLab Runner를 설치하고 작업을 실행하기 위해 Docker 실행자를 선택하는 경우 이를 “Docker-in-Docker” 구성이라고 할 수 있습니다.

GitLab UI에서 러너 접근 권한

러너를 등록하기 전에 GitLab의 모든 사용자가 액세스해야 하는지, 특정 GitLab 그룹이나 프로젝트에만 제한해야 하는지 결정해야 합니다.

액세스할 사용자에 따라 세 가지 유형의 러너가 있습니다:

러너의 범위는 등록 중에 정의됩니다. 이렇게 하면 러너가 사용 가능한 프로젝트를 알 수 있습니다.

태그

러너를 등록하면 러너에 태그를 추가할 수 있습니다.

CI/CD 작업 실행 시 할당된 태그를 확인하여 사용할 러너를 알 수 있습니다. 태그는 작업에 대한 가능한 러너 목록을 필터링하는 유일한 방법입니다.

예를 들어, 러너에 ruby 태그가 있는 경우 프로젝트의 .gitlab-ci.yml 파일에 다음 코드를 추가해야 합니다:

job:
  tags:
    - ruby

작업이 실행될 때 ruby 태그가 있는 러너가 사용됩니다.

러너 구성

러너를 설치하는 동안 config.toml 파일을 편집하여 러너를 구성할 수 있습니다. 러너 설치 프로세스 중에 이 파일이 설치됩니다.

이 파일에서 특정 러너나 모든 러너에 대한 설정을 편집할 수 있습니다.

로그 및 캐시와 같은 설정을 지정할 수 있습니다. 동시성, 메모리, CPU 한도 등을 설정할 수 있습니다.

러너 모니터링

Prometheus를 사용하여 러너를 모니터링할 수 있습니다. 현재 실행 중인 작업 수와 러너가 사용하는 CPU 양과 같은 정보를 확인할 수 있습니다.

러너를 사용하여 작업 실행

러너가 구성되고 프로젝트에서 사용할 수 있는 상태가 되면 귀하의 CI/CD 작업에서 러너를 사용할 수 있습니다.

기능

GitLab Runner에는 다음과 같은 기능이 있습니다.

  • 여러 작업을 동시에 실행합니다.
  • 여러 토큰을 여러 서버에서 사용할 수 있습니다(심지어 프로젝트별로도 가능합니다).
  • 토큰 당 동시 작업 수를 제한할 수 있습니다.
  • 작업을 다음과 같이 실행할 수 있습니다:
    • 로컬로.
    • Docker 컨테이너를 사용하여.
    • Docker 컨테이너를 사용하고 SSH를 통해 작업 실행.
    • 다른 클라우드 및 가상화 하이퍼바이저에서 자동 확장이 가능한 Docker 컨테이너를 사용합니다.
    • 원격 SSH 서버에 연결합니다.
  • Go로 작성되었으며 다른 요구 사항 없이 단일 이진 파일로 배포됩니다.
  • Bash, PowerShell Core 및 Windows PowerShell을 지원합니다.
  • GNU/Linux, macOS 및 Windows에서 작동합니다(Docker를 실행할 수 있는 거의 모든 곳에서 작동함).
  • 작업 실행 환경의 사용자 정의가 가능합니다.
  • 다시 시작 없이 자동 구성을 다시로드할 수 있습니다.
  • Docker, Docker-SSH, Parallels 또는 SSH 실행 환경을 지원하는 쉽게 설치할 수 있습니다.
  • Docker 컨테이너의 캐싱이 가능합니다.
  • GNU/Linux, macOS 및 Windows를 위한 서비스로 쉽게 설치할 수 있습니다.
  • 내장된 Prometheus 메트릭 HTTP 서버가 있습니다.
  • Prometheus 메트릭 및 다른 작업별 데이터를 GitLab으로 전달하고 모니터링하는 Referee workers가 있습니다.

Runner 실행 흐름

이 다이어그램은 러너가 등록되고 작업이 요청되고 처리되는 방법을 보여줍니다. 또한 등록, 인증, 그리고 작업 토큰을 사용하는 어떤 작업들을 보여줍니다.

sequenceDiagram participant GitLab participant GitLabRunner participant Executor opt 등록 GitLabRunner ->>+ GitLab: 등록 토큰으로 POST /api/v4/runners GitLab -->>- GitLabRunner: runner 토큰으로 등록됨 end loop 작업 요청 및 처리 GitLabRunner ->>+ GitLab: runner 토큰을 사용하여 POST /api/v4/jobs/request GitLab -->>+ GitLabRunner: job 페이로드 및 job 토큰 GitLabRunner ->>+ Executor: job 페이로드 Executor ->>+ GitLab: job 토큰을 사용하여 소스 복제 Executor ->>+ GitLab: job 토큰을 사용하여 아티팩트 다운로드 Executor -->>- GitLabRunner: 작업 출력 및 상태 반환 GitLabRunner -->>- GitLab: job 토큰으로 작업 출력 및 상태 업데이트 end

용어 해설

이 용어 해설은 GitLab Runner와 관련된 용어의 정의를 제공합니다.

  • GitLab Runner: 대상 컴퓨팅 플랫폼에서 GitLab CI 작업을 실행하는 애플리케이션.
  • 러너 구성: config.toml의 단일 [[runner]] 항목으로 UI에서 러너로 표시됨.
  • 러너 관리자: config.toml을 읽고 모든 러너 구성을 동시에 실행하는 프로세스.
  • 러너: 선택한 머신에서 작업을 실행하는 프로세스. Executor의 유형에 따라 이 머신은 러너 관리자에 로컬일 수도 있고(shell 또는 docker executor) 오토스케일러에 의해 생성된 원격 머신일 수도 있습니다(docker-autoscaler 또는 kubernetes).
  • 머신: 러너가 작동하는 가상 머신(VM) 또는 파드. GitLab Runner는 고유한 영구 머신 ID를 자동으로 생성하여 동일한 러너 구성을 여러 머신에 제공할 때 작업을 별도로 라우팅할 수 있지만 UI에서 러너 구성을 그룹화합니다.

공식 GitLab 용어 목록GitLab Runner의 아키텍처 항목을 참조하세요.

문제 해결

일반적인 문제를 해결하는 방법을 확인하세요.

기여

기여를 환영합니다. 세부 정보는 CONTRIBUTING.md개발 문서를 참조하세요.

GitLab Runner 프로젝트의 리뷰어이면 GitLab Runner 리뷰 문서를 읽어보세요.

또한 GitLab Runner 프로젝트의 릴리스 프로세스를 검토할 수 있습니다.

변경 로그

최근 변경 사항을 확인하려면 CHANGELOG를 참조하세요.

라이선스

이 코드는 MIT 라이선스에 따라 배포됩니다. 라이선스 파일을 확인하세요.