Executors

Tier: Free, Premium, Ultimate Offering: GitLab.com, 자체 관리

GitLab Runner은 여러 실행기를 구현하여 서로 다른 환경에서 빌드를 실행할 수 있습니다.

만약 어떤 실행기를 선택할지 확신이 없다면, 실행기 선택를 참고하세요.

각 실행기에서 지원하는 기능에 대한 자세한 정보는 호환성 차트를 참고하세요.

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

이러한 실행기들은 잠겨 있으며 새로운 실행기의 개발이나 수용이 더 이상 되지 않습니다. 자세한 정보는 새 실행기 기여하기를 참고하세요.

Docker가 아닌 실행기에 필요한 사전 조건

도우미 이미지를 사용하지 않는 실행기는 대상 장비에 Git 설치와 PATH에 Git의 최신 사용 가능한 버전을 항상 사용해야 합니다.

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

GitLab Runner 명령을 실행하는 사용자에 대해 git lfs install를 사용하여 Git LFS를 초기화하세요. 시스템 전체에 대해 Git LFS를 초기화하려면 git lfs install --system을 사용하세요.

실행기 선택하기

실행기는 프로젝트를 빌드하는 다른 플랫폼과 방법론을 지원합니다. 아래 표는 각 실행기의 주요 사항을 보여주어 실행기를 선택하는 데 도움이 될 것입니다.

실행기 SSH Shell VirtualBox Parallels Docker Kubernetes Custom
각 빌드마다 깨끗한 빌드 환경 사용하기 조건부 (4)
이전 클론 재사용하기 조건부 (4)
러너 파일 시스템 접근 보호 (5) 조건부
러너 머신 이전하기 부분적 부분적
동시 빌드를 위한 제로 구성 지원 ✗ (1) 조건부 (4)
복잡한 빌드 환경 ✗ (2) ✓ (3) ✓ (3)
빌드 문제 디버깅 쉬움 쉬움 어려움 어려움 중간 중간 중간
  1. 대부분의 경우에는 문제가 발생할 수 있으나 가능합니다. 특히 빌드에서 사용하는 서비스가 설치된 경우에는 문제가 될 수 있습니다.
  2. 수동 종속성 설치가 필요합니다.
  3. 예를 들어 Vagrant를 사용하는 경우.
  4. 프로비저닝하는 환경의 종류에 따라 다릅니다. 완전히 격리될 수도 있고 빌드 간에 공유될 수도 있습니다.
  5. 러너의 파일 시스템 접근이 보호되지 않을 때, 작업은 러너의 토큰, 캐시 및 다른 작업의 코드를 포함한 시스템 전체에 액세스할 수 있습니다. ✓로 표시된 실행기는 기본적으로 러너가 파일 시스템에 액세스하지 못하게 합니다. 그러나 보안 결함 또는 특정 구성을 통해 작업이 컨테이너를 벗어나 파일 시스템에 액세스할 수 있습니다.

Shell 실행기

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

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

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

Docker executor

귀하의 프로젝트를 빌드하기 위한 모든 종속성을 Docker 이미지에 넣을 수 있으며, 이로써 종속성 관리가 더 간단해집니다. Docker executor를 사용하여 MySQL과 같은 의존 서비스와 함께 빌드 환경을 만들 수 있습니다.

Docker Machine executor

Docker Machine은 자동 스케일링을 지원하는 Docker executor의 특별한 버전입니다. 일반적인 Docker executor와 유사하게 작동하지만 _Docker Machine_에 의해 필요에 따라 생성된 빌드 호스트를 사용합니다.

Kubernetes executor

기존의 Kubernetes 클러스터를 빌드에 사용하기 위해 Kubernetes executor를 사용할 수 있습니다. executor는 Kubernetes 클러스터 API를 호출하고 각 GitLab CI 작업에 대해 새로운 Pod(빌드 컨테이너 및 서비스 컨테이너)를 생성합니다.

SSH executor

SSH executor는 완결성을 위해 추가되었지만, 가장 적게 지원되는 executor입니다. SSH executor를 사용하면 GitLab Runner가 외부 서버에 연결하여 빌드를 실행합니다. 이 executor를 사용하는 조직의 성공 사례가 있지만, 일반적으로 기타 유형 중 하나를 사용하는 것을 권장합니다.

Custom executor

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

호환성 차트

다양한 executor가 지원하는 기능:

Executor SSH Shell VirtualBox Parallels Docker Kubernetes Custom
Secure Variables
GitLab Runner Exec command
.gitlab-ci.yml: image ✓ (1) ✓ (1) ✓ (via $CUSTOM_ENV_CI_JOB_IMAGE)
.gitlab-ci.yml: services
.gitlab-ci.yml: cache
.gitlab-ci.yml: artifacts
단계 간 아티팩트 전달
GitLab Container Registry 비공개 이미지 사용 n/a n/a n/a n/a n/a
대화형 웹 터미널 ✓ (UNIX)
  1. GitLab Runner 14.2에서 지원 추가. 자세한 내용은 기본 VM 이미지 재정의 섹션을 참조하세요.

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

Shells Bash PowerShell Desktop PowerShell Core Windows Batch (deprecated)
Windows ✗ (4) ✓ (3) ✓ (2)
Linux ✓ (1)
macOS ✓ (1)
FreeBSD ✓ (1)
  1. 기본 셸.
  2. 폐기 예정된 셸. 지정된 shell 이 없을 경우 기본 셸.
  3. 새로운 Runner가 등록될 때의 기본 셸.
  4. Windows의 Bash 셸은 지원되지 않습니다.

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

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