Executors
GitLab Runner은 다양한 환경에서 빌드를 실행하는 데 사용할 수 있는 여러 실행기를 구현합니다.
어떤 실행기를 선택할지 확신이 없다면 실행기 선택를 참조하세요.
각 실행기에서 지원하는 기능에 대해 더 많은 정보를 원한다면 호환성 차트를 참조하세요.
GitLab Runner은 다음 실행기를 제공합니다:
- SSH
- Shell
- Parallels
- VirtualBox
- Docker
- Docker Autoscaler
- Docker Machine (auto-scaling)
- Kubernetes
- Instance
- Custom
이러한 실행기는 잠겨 있으며 새로운 실행기는 더는 개발하거나 수용하지 않습니다. 자세한 정보는 새 실행기 기여를 참조하세요.
Docker 실행기가 아닌 실행기에 대한 사전 요구 사항
도우미 이미지에 의존하지 않는 실행기는 대상 머신과 PATH
에 Git 설치가 필요합니다. 항상 사용 가능한 Git의 최신 버전을 사용하세요.
GitLab Runner는 대상 머신에 Git LFS가 설치되어 있다면 git lfs
명령을 사용합니다. GitLab Runner가 이러한 실행기를 사용하는 시스템의 Git LFS가 최신 상태인지 확인하세요.
GitLab Runner 명령을 실행하는 사용자에게 git lfs install
로 Git LFS를 초기화하십시오. 전체 시스템에 git lfs install --system
로 Git LFS를 초기화할 수 있습니다.
실행기 선택
각 실행기는 프로젝트를 빌드하는 다른 플랫폼 및 방법론을 지원합니다. 아래 표는 각 실행기에 대한 주요 사항을 보여주어 실행기 선택을 도와줍니다.
실행기 | SSH | Shell | VirtualBox | Parallels | Docker | Kubernetes | Custom |
---|---|---|---|---|---|---|---|
모든 빌드에 대한 깨끗한 환경 생성 | ✗ | ✗ | ✓ | ✓ | ✓ | ✓ | 조건부 (4) |
이전 복제본을 재사용하면 좋음 | ✓ | ✓ | ✗ | ✗ | ✓ | ✗ | 조건부 (4) |
Runner 파일 시스템 액세스 보호(5) | ✓ | ✗ | ✓ | ✓ | ✓ | ✓ | 조건부 |
Runner 머신 이전 | ✗ | ✗ | 부분적 | 부분적 | ✓ | ✓ | ✓ |
동시 빌드에 대한 제로 구성 지원 | ✗ | ✗ (1) | ✓ | ✓ | ✓ | ✓ | 조건부 (4) |
복잡한 빌드 환경 | ✗ | ✗ (2) | ✓ (3) | ✓ (3) | ✓ | ✓ | ✓ |
빌드 문제의 디버깅 | 간편함 | 간편함 | 어려움 | 어려움 | 중간 | 중간 | 중간 |
- 빌드 머신에 설치된 서비스를 사용하는 경우 유사하지만 대부분의 경우 문제가 발생할 수 있습니다.
- 매뉴얼 의존성 설치가 필요합니다.
- 예를 들어 Vagrant를 사용하는 경우.
- 프로비저닝하는 환경의 종류에 따라 다릅니다. 완전히 격리될 수도 있고 각 빌드 간에 공유될 수도 있습니다.
- 실행기 파일 시스템 액세스가 보호되지 않을 때 작업은 빌드 머신의 전체 시스템에 액세스할 수 있으며, 이는 Runner 토큰 및 캐시 및 다른 작업의 코드를 포함합니다. ✓로 표시된 실행기는 기본적으로 실행기가 파일 시스템에 액세스할 수 없게 합니다. 그러나 보안 결함 또는 특정 구성으로 인해 작업이 컨테이너를 벗어나 파일 시스템에 액세스할 수 있습니다.
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 실행기입니다.
Kubernetes 실행기
Kubernetes 실행기를 사용하여 기존 Kubernetes 클러스터를 빌드에 사용할 수 있습니다. 실행기는 Kubernetes 클러스터 API를 호출하고 각 GitLab CI 작업에 대해 새로운 Pod(빌드 컨테이너 및 서비스 컨테이너)를 만듭니다.
SSH 실행기
SSH 실행기는 완성을 위해 추가되었지만 가장 지원되는 실행기는 아닙니다. SSH 실행기를 사용하면 GitLab Runner가 외부 서버에 연결하여 빌드를 실행합니다. 이 실행기를 사용하는 조직에서 몇 가지 성공 사례가 있지만 보통은 다른 유형을 사용할 것을 권장합니다.
Custom 실행기
Custom 실행기를 사용하여 고유한 실행 환경을 지정할 수 있습니다. GitLab Runner가 실행기를 제공하지 않을 때(예: LXC 컨테이너), 사용자는 GitLab Runner에 자체 실행 파일을 제공하여 사용하려는 환경을 프로비저닝하고 정리할 수 있습니다.
호환성 차트
다양한 실행기에 의해 지원되는 기능:
실행기 | SSH | Shell | VirtualBox | Parallels | Docker | Kubernetes | Custom |
---|---|---|---|---|---|---|---|
보안 변수 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
GitLab Runner 실행 명령어 | ✗ | ✓ | ✗ | ✗ | ✓ | ✓ | ✓ |
.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 데스크탑 | PowerShell Core | Windows Batch (deprecated) |
---|---|---|---|---|
Windows | ✗ (4) | ✓ (3) | ✓ | ✓ (2) |
Linux | ✓ (1) | ✗ | ✓ | ✗ |
macOS | ✓ (1) | ✗ | ✓ | ✗ |
FreeBSD | ✓ (1) | ✗ | ✗ | ✗ |
- 기본 셸입니다.
- Deprecated.
shell
를 지정하지 않은 경우 기본 셸입니다. - 새로운 러너가 등록될 때 기본 셸입니다.
- Windows의 Bash 셸은 지원되지 않습니다.
다양한 셸에 의해 지원되는 대화형 웹 터미널용 시스템:
셸 | Bash | PowerShell 데스크탑 | PowerShell Core | Windows Batch (deprecated) |
---|---|---|---|---|
Windows | ✗ | ✗ | ✗ | ✗ |
Linux | ✓ | ✗ | ✗ | ✗ |
macOS | ✓ | ✗ | ✗ | ✗ |
FreeBSD | ✓ | ✗ | ✗ | ✗ |