Executors

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

GitLab Runner는 다양한 환경에서 빌드를 실행하는 데 사용할 수 있는 여러 실행기를 구현합니다.

어떤 실행기를 선택해야 할지 확실하지 않은 경우 실행기 선택하기를 참조하세요.

각 실행기가 지원하는 기능에 대한 자세한 내용은 호환성 차트를 참조하세요.

GitLab Runner는 다음과 같은 실행기를 제공합니다:

이 실행기는 잠겨 있으며 더 이상 새로운 실행기를 개발하거나 수용하지 않습니다. 더 많은 정보는 새 실행기 기여하기를 참조하세요.

Docker가 아닌 실행기 요건

헬퍼 이미지에 의존하지 않는 실행기는 대상 머신에 Git이 설치되어 있어야 하며, PATH에 포함되어 있어야 합니다. 항상 최신 버전의 Git을 사용하세요.

GitLab Runner는 대상 머신에 Git LFS가 설치되어 있는 경우 git lfs 명령을 사용합니다. GitLab Runner가 이러한 실행기를 사용하는 모든 시스템에서 Git LFS가 최신 상태인지 확인하세요.

git lfs install을 사용하여 GitLab Runner 명령을 실행하는 사용자에 대해 Git LFS를 초기화해야 합니다. git lfs install --system을 사용하여 전체 시스템에서 Git LFS를 초기화할 수도 있습니다.

실행기 선택하기

실행기는 프로젝트를 빌드하기 위한 다양한 플랫폼과 방법론을 지원합니다. 아래 표에는 각 실행기에 대한 주요 사실이 나열되어 있어 어떤 실행기를 사용할지 결정하는 데 도움이 됩니다.

Executor SSH Shell VirtualBox Parallels Docker Kubernetes Custom
모든 빌드에 대한 클린 빌드 환경 conditional (4)
이전에 클론이 존재하면 재사용 conditional (4)
실행기 파일 시스템 액세스 보호됨 (5) conditional
러너 머신 이주 partial partial
동시 빌드를 위한 제로 구성 지원 ✗ (1) conditional (4)
복잡한 빌드 환경 ✗ (2) ✓ (3) ✓ (3)
빌드 문제 디버깅 쉬움 쉬움 어려움 어려움 보통 보통 보통
  1. 가능하지만 대부분의 경우 빌드가 빌드 머신에 설치된 서비스 사용 시 문제가 발생함.
  2. 수동 종속성 설치가 필요함.
  3. 예: Vagrant 사용.
  4. 프로비저닝하는 환경의 종류에 따라 달라질 수 있음. 완전히 격리되거나 각 빌드 간에 공유될 수 있음.
  5. 러너의 파일 시스템 액세스가 보호되지 않을 때 작업이 전체 시스템에 액세스할 수 있으며, 여기에는 러너의 토큰 및 다른 작업의 캐시와 코드가 포함됨.
    ✓로 표시된 실행기는 기본적으로 러너가 파일 시스템에 액세스하는 것을 허용하지 않음.
    그러나 보안 결함이나 특정 구성으로 인해 작업이 컨테이너에서 벗어나 러너를 호스팅하는 파일 시스템에 액세스할수 있음.

셸 실행기

Shell은 구성하기 가장 간단한 실행기입니다. 빌드에 필요한 모든 종속성은 GitLab Runner가 설치된 동일한 머신에 수동으로 설치해야 합니다.

가상 머신 실행기 (VirtualBox / Parallels)

이 실행기를 사용하여 이미 생성된 가상 머신을 사용하면, 이 머신을 복제하여 빌드를 실행합니다. GitLab Runner는 Windows, Linux, macOS 또는 FreeBSD 운영 체제에서 빌드를 실행하는 데 사용할 수 있는 두 가지 전체 시스템 가상화 옵션인 VirtualBoxParallels를 제공합니다. GitLab Runner는 가상 머신에 연결하여 빌드를 실행합니다. 가상 머신 실행기는 인프라 비용을 줄이는 데에도 사용할 수 있습니다.

도커 실행기

Docker를 사용하여 깨끗한 빌드 환경을 만들 수 있습니다. 프로젝트 빌드에 필요한 모든 종속성을 Docker 이미지에 넣을 수 있어 종속성 관리를 보다 간단하게 만들어 줍니다. Docker 실행기를 사용하여 MySQL과 같은 종속 서비스와 함께 빌드 환경을 생성할 수 있습니다.

도커 머신 실행기

Docker Machine은 자동 확장을 지원하는 Docker 실행기의 특별한 버전입니다. 일반적인 Docker 실행기처럼 작동하지만 _Docker Machine_에 의해 수요에 따라 생성된 빌드 호스트에서 실행됩니다.

쿠버네티스 실행기

Kubernetes 실행기를 사용하여 기존의 Kubernetes 클러스터를 빌드에 사용할 수 있습니다. 이 실행기는 Kubernetes 클러스터 API를 호출하여 각 GitLab CI 작업을 위한 새로운 Pod(빌드 컨테이너와 서비스 컨테이너를 포함)를 생성합니다.

SSH 실행기

SSH 실행기는 완전성을 위해 추가되었지만, 지원이 가장 적은 실행기입니다. SSH 실행기를 사용할 때 GitLab Runner는 외부 서버에 연결하여 거기서 빌드를 실행합니다. 이 실행기를 사용하는 조직의 성공 사례도 있지만, 일반적으로 다른 유형을 사용하는 것을 추천합니다.

사용자 정의 실행기

Custom 실행기를 사용하여 자체 실행 환경을 지정할 수 있습니다. GitLab Runner가 실행기를 제공하지 않는 경우(예: LXC 컨테이너 등), 원하는 환경을 프로비저닝 및 정리하는데 사용할 자체 실행 파일을 GitLab Runner에 제공할 수 있습니다.

호환성 차트

다양한 실행기에 의해 지원되는 기능:

실행기 SSH Shell VirtualBox Parallels Docker Kubernetes Custom
보안 변수
.gitlab-ci.yml: 이미지 ✓ (1) ✓ (1) ✓ (via $CUSTOM_ENV_CI_JOB_IMAGE)
.gitlab-ci.yml: 서비스
.gitlab-ci.yml: 캐시
.gitlab-ci.yml: 아티팩트
단계 간 아티팩트 전달
GitLab Container Registry의 개인 이미지 사용 n/a n/a n/a n/a n/a
대화형 웹 터미널 ✓ (UNIX)
  1. 지원 추가됨 GitLab Runner 14.2에서. 더 자세한 내용은 기본 VM 이미지 재정의 섹션을 참조하세요.

다양한 셸에서 지원되는 시스템:

셸s Bash PowerShell Desktop PowerShell Core Windows Batch (deprecated)
Windows ✗ (4) ✓ (3) ✓ (2)
Linux ✓ (1)
macOS ✓ (1)
FreeBSD ✓ (1)
  1. 기본 셸.
  2. 더 이상 사용되지 않음. 지정된 경우 기본 셸. shell
  3. 새로운 러너가 등록될 때 기본 셸.
  4. Windows에서 Bash 셸은 지원되지 않음.

대화형 웹 터미널에서의 다양한 셸에 의해 지원되는 시스템:

셸s Bash PowerShell Desktop PowerShell Core Windows Batch (deprecated)
Windows
Linux
macOS
FreeBSD