GitLab Runner

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed형

GitLab Runner은 GitLab CI/CD와 함께 파이프라인에서 작업을 실행하는 응용 프로그램입니다.

GitLab 호스팅 러너 사용

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

Self-Managed형 러너 사용

Tier: Free, Premium, Ultimate Offering: Self-Managed형

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

러너 플릿 확장

기업이 러너 플릿을 사용하여 확장되면, 이러한 러너에 대한 성능을 모니터링하고 조정하는 방법을 계획해야 합니다.

GitLab Runner 버전

호환성을 유지하기 위해, GitLab Runner의 주.부 버전은 GitLab 주요 및 부 버전과 일치해야 합니다. 이전 러너는 새로운 GitLab 버전과 그 반대에도 여전히 작동할 수 있습니다. 그러나 버전 차이가 있을 경우 기능이 제대로 작동하지 않을 수 있습니다.

뒷호환성은 부 버전 업데이트 간에 보장됩니다. 그러나 때로는 GitLab의 부 버전 업데이트가 GitLab Runner가 동일한 부 버전에 있어야 하는 새로운 기능을 도입할 수 있습니다.

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

자체 러너를 호스팅하지만 리포지터리를 GitLab.com에 호스팅하는 경우, GitLab Runner를 최신 버전으로 업데이트해야 합니다. GitLab.com은 지속적으로 업데이트됩니다.

러너 등록

응용 프로그램을 설치한 후 개별 러너를 등록합니다. 러너는 GitLab에서 나온 CI/CD 작업을 실행하는 에이전트입니다.

러너를 등록하면 GitLab 인스턴스와 GitLab Runner가 설치된 기계 사이의 통신을 설정합니다.

러너는 일반적으로 GitLab Runner를 설치한 기계에서 작업을 처리합니다. 그러나 컨테이너, 쿠버네티스 클러스터 또는 클라우드의 자동 스케일링된 인스턴스에서 작업을 처리하는 러너도 있습니다.

Executors

러너를 등록할 때 Executor를 선택해야 합니다.

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

예를 들어:

  • CI/CD 작업을 PowerShell 명령으로 실행하려면 Windows 서버에 GitLab Runner를 설치한 다음 셸 Executor를 사용하는 러너를 등록할 수 있습니다.
  • 사용자 정의 Docker 컨테이너에서 명령을 실행하려면 Linux 서버에 GitLab Runner를 설치한 다음 Docker Executor를 사용하는 러너를 등록할 수 있습니다.

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

Docker 컨테이너에 GitLab Runner를 설치하고 작업을 실행하려면 Docker Executor 을 선택하는 경우 “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 메트릭 및 다른 작업별 데이터를 모니터링하고 전달하는 심판 작업 지원.

러너 실행 흐름

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

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

용어 해설서

이 용어 해설서는 GitLab Runner와 관련된 용어에 대한 정의를 제공합니다.

  • GitLab Runner: 대상 컴퓨팅 플랫폼에서 GitLab CI 작업을 실행하는 응용 프로그램으로 설치하는 애플리케이션입니다.
  • runner configuration: config.toml의 단일 [[runner]] 항목으로 UI에서 runner로 표시되는 것입니다.
  • runner manager: config.toml을 읽고 모든 runner 구성을 동시에 실행하는 프로세스입니다.
  • runner: 선택된 기계에서 작업을 실행하는 프로세스입니다. 실행자 유형에 따라, 이 기계는 runner manager에 지역적일 수 있습니다(shell 또는 docker 실행자) 또는 autoscaler에 의해 생성된 원격 기계일 수 있습니다(docker-autoscaler 또는 kubernetes).
  • machine: runner가 작동하는 가상 머신(VM) 또는 파드입니다. GitLab Runner는 고유하고 지속적인 machine ID를 자동으로 생성하여 여러 기계가 동일한 runner 구성을 갖는 경우 작업을 별도로 라우팅할 수 있지만 runner 구성은 UI에서 그룹화됩니다.

공식 GitLab 단어 디렉터리GitLab Runner의 GitLab 아키텍처 항목도 참조하세요.

문제 해결

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

기여

기여를 환영합니다. 세부 사항은 CONTRIBUTING.md개발 문서를 참조하세요.

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

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

변경로그

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

라이선스

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