Executors
GitLab Runner은 다양한 환경에서 빌드를 실행하는 데 사용할 수 있는 여러 실행기를 구현합니다.
특정한 실행기를 선택하기 어려운 경우 실행기 선택를 참조하세요.
각 실행기에서 지원하는 기능에 대한 자세한 정보는 호환성 차트를 참조하세요.
GitLab Runner는 다음 실행기를 제공합니다:
- SSH
- Shell
- Parallels
- VirtualBox
- Docker
- Docker Autoscaler
- Docker Machine (auto-scaling)
- Kubernetes
- Instance
- Custom
이러한 실행기는 더는 개발되거나 새로운 실행기를 받지 않습니다. 자세한 내용은 새 실행기 기고를 참조하세요.
비-Docker 실행기 사전 준비사항
도우미 이미지에 의존하지 않는 실행기는 대상 머신에 Git 설치 및 PATH
에 필요합니다. 언제나 가능한 최신 버전의 Git을 사용하세요.
GitLab Runner는 Git LFS가 대상 머신에 설치되어 있는 경우 git lfs
명령을 사용합니다. GitLab Runner가 이러한 실행기를 사용하는 시스템의 Git LFS를 최신 상태로 유지하세요.
GitLab Runner 명령을 실행하는 사용자에 대해 git lfs install
를 초기화하세요. 전체 시스템에 대해 git lfs install --system
을 사용하여 Git LFS를 초기화할 수 있습니다.
실행기 선택
각 실행기는 프로젝트 빌드용 다른 플랫폼 및 방법론을 지원합니다. 아래 표에는 각 실행기에 대한 주요 사항이 표시되어 있어 어떤 실행기를 선택할지 결정하는 데 도움이 됩니다.
실행기 | SSH | Shell | VirtualBox | Parallels | Docker | Kubernetes | Custom |
---|---|---|---|---|---|---|---|
모든 빌드에 대한 깨끗한 환경 | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | 조건부 (4) |
기존 클론 재사용 | ✓ | ✓ | ✗ | ✗ | ✓ | ✗ | 조건부 (4) |
러너 파일 시스템 액세스 보호 (5) | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | 조건부 |
러너 머신 이전 이동 | ✗ | ✗ | 부분적 | 부분적 | ✓ | ✓ | ✓ |
동시 빌드에 대한 영 제로 구성 지원 | ✗ | ✗ (1) | ✓ | ✓ | ✓ | ✓ | 조건부 (4) |
복잡한 빌드 환경 | ✗ | ✗ (2) | ✓ (3) | ✓ (3) | ✓ | ✓ | ✓ |
빌드 문제 디버깅 | 쉽게 | 쉽게 | 어렵게 | 어렵게 | 보통 | 보통 | 보통 |
- 빌드가 빌드 머신에 설치된 서비스를 사용하는 경우 가능하지만 대부분의 경우 문제가 발생합니다.
- 수동 종속성 설치가 필요합니다.
- 예를 들어 Vagrant를 사용하는 경우
- 프로비저닝하는 환경에 따라 달라집니다. 완전히 격리되거나 각 빌드 간에 공유될 수 있습니다.
- 러너 파일 시스템 액세스가 보호되지 않은 경우, 작업은 러너의 토큰 및 다른 작업의 캐시와 코드를 포함한 전체 시스템에 액세스할 수 있습니다. ✓로 표시된 실행기는 기본적으로 러너가 파일 시스템에 액세스하지 못하도록 허용하지 않습니다. 그러나 보안 결함 또는 특정 구성 설정으로 작업이 컨테이너를 벗어나 파일 시스템에 액세스할 수 있습니다.
Shell 실행기
Shell은 구성하기 가장 간단한 실행기입니다. 빌드에 필요한 모든 의존성은 GitLab Runner가 설치된 동일한 머신에 수동으로 설치해야 합니다.
가상 머신 실행기 (VirtualBox / Parallels)
이 실행기를 사용하여 이미 만든 가상 머신을 사용하여 빌드를 실행할 수 있습니다. GitLab Runner는 Windows, Linux, macOS 또는 FreeBSD 운영 체제에서 빌드를 실행할 수 있는 VirtualBox 및 Parallels와 같은 두 가지 완전한 시스템 가상화 옵션을 제공합니다. GitLab Runner는 가상 머신에 연결하여 빌드를 실행합니다. 가상 머신 실행기는 인프라 비용을 줄이는 데에도 사용할 수 있습니다.
Docker 실행기
빌드 환경을 깨끗하게 유지하기 위해 Docker를 사용할 수 있습니다. 프로젝트를 빌드하는 데 필요한 모든 종속성을 Docker 이미지에 넣을 수 있어 종속성 관리가 더 간단해집니다. Docker 실행기를 사용하여 MySQL과 같은 서비스에 의존하는 빌드 환경을 만들 수 있습니다.
Docker Machine 실행기
Docker Machine은 자동 스케일링을 지원하는 Docker 실행기의 특별한 버전입니다. 일반적인 Docker 실행기와 유사하지만 _Docker Machine_에 의해 필요에 따라 생성된 빌드 호스트를 사용합니다.
Kubernetes 실행기
기존의 Kubernetes 클러스터를 빌드에 사용하기 위해 Kubernetes 실행기를 사용할 수 있습니다. 실행기는 Kubernetes 클러스터 API를 호출하고 각 GitLab CI 작업에 대해 새로운 Pod(빌드 컨테이너 및 서비스 컨테이너)를 생성합니다.
SSH 실행기
SSH 실행기는 완성도를 위해 추가되었지만, 가장 지원되는 실행기는 아닙니다. SSH 실행기를 사용하면 GitLab Runner가 외부 서버에 연결하여 빌드를 실행합니다. 이 실행기를 사용하는 조직의 성공 사례가 있지만, 보통 다른 유형을 사용하는 것을 권장합니다.
Custom 실행기
Custom 실행기를 사용하여 자체 실행 환경을 지정할 수 있습니다. GitLab Runner가 실행기를 제공하지 않는 경우 (예: LXC 컨테이너) 자체 실행 파일을 제공하여 사용할 환경을 프로비저닝하고 정리할 수 있습니다.
호환성 표
서로 다른 실행기에 의해 지원되는 기능:
실행기 | SSH | 쉘 | VirtualBox | Parallels | Docker | Kubernetes | 커스텀 |
---|---|---|---|---|---|---|---|
보안 변수 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
.gitlab-ci.yml : 이미지
| ✗ | ✗ | ✓ (1) | ✓ (1) | ✓ | ✓ | ✓ (via $CUSTOM_ENV_CI_JOB_IMAGE )
|
.gitlab-ci.yml : 서비스
| ✗ | ✗ | ✗ | ✗ | ✓ | ✓ | ✓ |
.gitlab-ci.yml : 캐시
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
.gitlab-ci.yml : 아티팩트
| ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
단계 간 아티팩트 전달 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
GitLab 컨테이너 레지스트리 개인 이미지 사용 | n/a | n/a | n/a | n/a | ✓ | ✓ | n/a |
대화형 웹 터미널 | ✗ | ✓ (UNIX) | ✗ | ✗ | ✓ | ✓ | ✗ |
- GitLab Runner 14.2에서 추가된 지원. 자세한 내용은 베이스 VM 이미지 재정의 섹션을 참조하십시오.
다양한 쉘에 의해 지원되는 시스템:
쉘 | Bash | PowerShell Desktop | PowerShell Core | Windows Batch (deprecated) |
---|---|---|---|---|
Windows | ✗ (4) | ✓ (3) | ✓ | ✓ (2) |
Linux | ✓ (1) | ✗ | ✓ | ✗ |
macOS | ✓ (1) | ✗ | ✓ | ✗ |
FreeBSD | ✓ (1) | ✗ | ✗ | ✗ |
- 기본 쉘.
- 사용 중단된 사양.
shell
가 지정되지 않은 경우의 기본 쉘. - 새로운 러너가 등록될 때 기본 쉘.
- Windows에서의 Bash 셸은 지원되지 않습니다.
다양한 쉘에 의해 지원되는 대화형 웹 터미널의 시스템:
쉘 | Bash | PowerShell Desktop | PowerShell Core | Windows Batch (deprecated) |
---|---|---|---|---|
Windows | ✗ | ✗ | ✗ | ✗ |
Linux | ✓ | ✗ | ✗ | ✗ |
macOS | ✓ | ✗ | ✗ | ✗ |
FreeBSD | ✓ | ✗ | ✗ | ✗ |