InfoGrab Docs

Executor

요약

GitLab Runner는 다양한 환경에서 빌드를 실행하는 데 사용할 수 있는 여러 executor를 구현합니다: 유지 관리 모드의 다른 executor도 사용 가능하지만 활발히 기능 개발 중이 아닙니다. 일부 기능은 fleeting을 사용하는 러너가 필요합니다.

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

유지 관리 모드의 다른 executor도 사용 가능하지만 활발히 기능 개발 중이 아닙니다. 중요한 보안 업데이트는 제공되지만 새 기능은 추가되지 않습니다.

Note

일부 기능은 fleeting을 사용하는 러너가 필요합니다. Docker Autoscaler executor와 Instance executor가 fleeting을 사용합니다. GitLab Runner의 전체 기능을 활용하려면 이러한 executor 중 하나로 마이그레이션하는 것이 좋습니다.

어떤 executor를 선택할지 확실하지 않은 경우 executor 선택을 참고하세요.

각 executor에서 지원하는 기능에 대한 자세한 내용은 호환성 차트를 참고하세요.

이 executor들은 잠겨 있으며 더 이상 개발하거나 새로운 executor를 받아들이지 않습니다. 자세한 내용은 새 executor 기여하기를 참고하세요.

Executor 선택#

executor는 프로젝트 빌드를 위한 다양한 플랫폼과 방법론을 지원합니다. 다음 다이어그램은 운영 체제와 플랫폼에 따라 어떤 executor를 선택할지 보여줍니다:

Mermaid 다이어그램 (32줄)
소스 코드 보기
flowchart LR
    Start([Executor<br/>Selection]) --> Auto{Autoscaling?}
Auto --&gt;|YES| Platform{Platform?}
Auto --&gt;|NO| BuildType{Build&lt;br/&gt;Type?}

Platform --&gt;|Cloud&lt;br/&gt;Native| K8s[Kubernetes]
Platform --&gt;|Cloud&lt;br/&gt;VMs| OS1{OS?}

OS1 --&gt;|Linux| L1[Fleeting:&lt;br/&gt;Docker Autoscaler&lt;br/&gt;or Instance]
OS1 --&gt;|macOS| M1[Fleeting:&lt;br/&gt;Docker Autoscaler&lt;br/&gt;or Instance]
OS1 --&gt;|Windows| W1[Fleeting:&lt;br/&gt;Docker Autoscaler&lt;br/&gt;or Instance]

BuildType --&gt;|Container| OS2{OS?}
BuildType --&gt;|Shell| OS3{OS?}

OS2 --&gt;|Linux| L2[Docker&lt;br/&gt;Podman]
OS2 --&gt;|macOS| M2[Docker]
OS2 --&gt;|Windows| W2[Docker]

OS3 --&gt;|Linux| L3[Bash&lt;br/&gt;Zsh]
OS3 --&gt;|macOS| M3[Bash&lt;br/&gt;Zsh]
OS3 --&gt;|Windows| W3[PowerShell 5.1&lt;br/&gt;PowerShell 7.x]
OS3 --&gt;|Remote| R3[SSH&lt;br/&gt;(maintenance mode)]

classDef question fill:#e1f3fe,stroke:#333,stroke-width:2px,color:#000
classDef result fill:#dcffe4,stroke:#333,stroke-width:2px,color:#000
classDef start fill:#f9f9f9,stroke:#fff,stroke-width:2px,color:#000

class Start start;
class Auto,Platform,BuildType,OS1,OS2,OS3 question;
class K8s,L1,M1,W1,L2,M2,W2,L3,M3,W3,R3 result;</code></pre></details></div>
Note

SSH executor는 유지 관리 모드입니다. 중요 보안 업데이트는 수신되지만 새 기능은 계획되어 있지 않습니다. 또한 지원이 가장 적은 executor 중 하나입니다. 로컬 Shell 기반 빌드의 경우 Shell executor를 사용하는 것을 고려하세요.

아래 표는 각 executor에 대한 주요 사실을 보여주어 어떤 executor를 사용할지 결정하는 데 도움을 줍니다:

Note

SSH, Shell, VirtualBox, Parallels, Custom executor는 유지 관리 모드입니다. 중요 보안 업데이트는 수신되지만 새 기능은 계획되어 있지 않습니다.

Executor Docker Docker Autoscaler Instance Kubernetes SSH Shell VirtualBox Parallels Custom
모든 빌드에 대해 깨끗한 빌드 환경 조건부 1 조건부 1
이전 클론이 있으면 재사용 조건부 1 2 조건부 1
러너 파일 시스템 액세스 보호 3 조건부
러너 머신 마이그레이션 부분 부분
동시 빌드에 대한 제로 구성 지원 4 조건부 1
복잡한 빌드 환경 5 5 6 6
빌드 문제 디버깅 보통 보통 보통 보통 쉬움 쉬움 어려움 어려움 보통

각주:

  1. 프로비저닝하는 환경에 따라 다릅니다. 완전히 격리되거나 빌드 간에 공유될 수 있습니다.
  2. 동시성별 영구 빌드 볼륨 구성이 필요합니다.
  3. 러너의 파일 시스템 액세스가 보호되지 않으면 작업이 러너의 토큰과 다른 작업의 캐시 및 코드를 포함하여 전체 시스템에 액세스할 수 있습니다. ✓로 표시된 executor는 기본적으로 러너가 파일 시스템에 액세스하는 것을 허용하지 않습니다. 그러나 보안 결함이나 특정 구성에 의해 작업이 컨테이너를 벗어나 러너를 호스팅하는 파일 시스템에 액세스할 수 있습니다.
  4. 빌드가 빌드 머신에 설치된 서비스를 사용하는 경우 executor 선택이 가능하지만 문제가 있습니다.
  5. 수동 의존성 설치가 필요합니다.
  6. 예를 들어, Vagrant를 사용합니다.

Docker executor#

Docker executor는 컨테이너를 통해 깨끗한 빌드 환경을 제공합니다. 의존성 관리가 간단하며 Docker 이미지에 모든 의존성이 패키지되어 있습니다. 이 executor는 Runner 호스트에 Docker가 설치되어 있어야 합니다.

이 executor는 MySQL과 같은 추가 서비스를 지원합니다. 또한 대안적인 컨테이너 런타임으로 Podman도 수용합니다.

이 executor는 일관되고 격리된 빌드 환경을 유지합니다.

Docker Autoscaler executor#

Docker Autoscaler executor는 러너 매니저가 처리하는 작업을 수용하기 위해 온디맨드로 인스턴스를 생성하는 오토스케일 지원 Docker executor입니다. Docker executor를 래핑하여 모든 Docker executor 옵션과 기능을 지원합니다.

Docker Autoscaler는 오토스케일링을 위해 fleeting 플러그인을 사용합니다. Fleeting은 오토스케일된 인스턴스 그룹의 추상화로, Google Cloud, AWS, Azure와 같은 클라우드 공급자를 지원하는 플러그인을 사용합니다. 이 executor는 동적 워크로드 요구 사항이 있는 환경에 특히 적합합니다.

Instance executor#

Instance executor는 러너 매니저가 처리하는 예상 작업 볼륨을 수용하기 위해 온디맨드로 인스턴스를 생성하는 오토스케일 지원 executor입니다.

이 executor와 관련된 Docker Autoscale executor는 GitLab Runner Fleeting 및 Taskscaler 기술과 함께 작동하는 새로운 오토스케일링 executor입니다.

Instance executor도 오토스케일링을 위해 fleeting 플러그인을 사용합니다.

작업이 호스트 인스턴스, 운영 체제 및 연결된 장치에 대한 전체 액세스가 필요한 경우 Instance executor를 사용할 수 있습니다. Instance executor는 단일 테넌트 및 멀티 테넌트 작업을 수용하도록 구성할 수도 있습니다.

Kubernetes executor#

Kubernetes executor를 사용하여 빌드에 기존 Kubernetes 클러스터를 사용할 수 있습니다. executor는 Kubernetes 클러스터 API를 호출하고 각 GitLab CI/CD 작업에 대해 새 Pod(빌드 컨테이너와 서비스 컨테이너 포함)를 생성합니다. 이 executor는 클라우드 네이티브 환경에 특히 적합하며 뛰어난 확장성과 리소스 활용을 제공합니다.

유지 관리 모드의 Executor#

다음 executor는 중요 보안 업데이트를 수신하지만 새 기능은 계획되어 있지 않습니다:

호환성 차트#

각 executor에서 지원하는 기능:

Note

SSH, Shell, VirtualBox, Parallels, Custom executor는 유지 관리 모드입니다. 중요 보안 업데이트는 수신되지만 새 기능은 계획되어 있지 않습니다.

Executor Docker Docker Autoscaler Instance Kubernetes SSH Shell VirtualBox Parallels Custom
보안 변수
.gitlab-ci.yml: image ✓ (1) ✓ (1) ✓ ($CUSTOM_ENV_CI_JOB_IMAGE 사용)
.gitlab-ci.yml: services
.gitlab-ci.yml: cache
.gitlab-ci.yml: artifacts
스테이지 간 아티팩트 전달
GitLab Container Registry 프라이빗 이미지 사용 해당 없음 해당 없음 해당 없음 해당 없음 해당 없음 해당 없음
인터랙티브 웹 터미널

각주:

  1. GitLab Runner 14.2에서 추가된 지원. 자세한 내용은 기본 VM 이미지 재정의 섹션을 참고하세요.

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

Shells Bash PowerShell Desktop PowerShell Core sh
Windows ✗ 4 ✓ 3
Linux ✓ 1
macOS ✓ 1
FreeBSD ✓ 1

각주:

  1. 러너 등록 및 shell executor 작업의 기본 셸.
  2. Bash 셸은 Windows에서 지원되지 않습니다.
  3. docker-windowskubernetes executor 작업의 기본 셸.
  4. Windows에서 shell executor 작업의 기본 셸.

다양한 셸에서 인터랙티브 웹 터미널에 지원하는 시스템:

Shells Bash PowerShell Desktop PowerShell Core sh
Windows
Linux
macOS
FreeBSD

Docker가 아닌 executor를 위한 Git 요구 사항#

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

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

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

GitLab 인스턴스와의 Git 상호 작용을 인증하기 위해 GitLab Runner는 CI_JOB_TOKEN을 사용합니다. FF_GIT_URLS_WITHOUT_TOKENS 설정에 따라, 마지막으로 사용된 자격 증명이 사전 설치된 Git 자격 증명 헬퍼(예: Git credential manager)에 캐시될 수 있습니다. 이 헬퍼가 설치되어 자격 증명을 캐시하도록 구성된 경우에 한합니다:

Executor

Tier: Free, Premium, Ultimate
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
원문 보기
요약

GitLab Runner는 다양한 환경에서 빌드를 실행하는 데 사용할 수 있는 여러 executor를 구현합니다: 유지 관리 모드의 다른 executor도 사용 가능하지만 활발히 기능 개발 중이 아닙니다. 일부 기능은 fleeting을 사용하는 러너가 필요합니다.

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

유지 관리 모드의 다른 executor도 사용 가능하지만 활발히 기능 개발 중이 아닙니다. 중요한 보안 업데이트는 제공되지만 새 기능은 추가되지 않습니다.

Note

일부 기능은 fleeting을 사용하는 러너가 필요합니다. Docker Autoscaler executor와 Instance executor가 fleeting을 사용합니다. GitLab Runner의 전체 기능을 활용하려면 이러한 executor 중 하나로 마이그레이션하는 것이 좋습니다.

어떤 executor를 선택할지 확실하지 않은 경우 executor 선택을 참고하세요.

각 executor에서 지원하는 기능에 대한 자세한 내용은 호환성 차트를 참고하세요.

이 executor들은 잠겨 있으며 더 이상 개발하거나 새로운 executor를 받아들이지 않습니다. 자세한 내용은 새 executor 기여하기를 참고하세요.

Executor 선택#

executor는 프로젝트 빌드를 위한 다양한 플랫폼과 방법론을 지원합니다. 다음 다이어그램은 운영 체제와 플랫폼에 따라 어떤 executor를 선택할지 보여줍니다:

Mermaid 다이어그램 (32줄)
소스 코드 보기
flowchart LR
    Start([Executor<br/>Selection]) --> Auto{Autoscaling?}
Auto --&gt;|YES| Platform{Platform?}
Auto --&gt;|NO| BuildType{Build&lt;br/&gt;Type?}

Platform --&gt;|Cloud&lt;br/&gt;Native| K8s[Kubernetes]
Platform --&gt;|Cloud&lt;br/&gt;VMs| OS1{OS?}

OS1 --&gt;|Linux| L1[Fleeting:&lt;br/&gt;Docker Autoscaler&lt;br/&gt;or Instance]
OS1 --&gt;|macOS| M1[Fleeting:&lt;br/&gt;Docker Autoscaler&lt;br/&gt;or Instance]
OS1 --&gt;|Windows| W1[Fleeting:&lt;br/&gt;Docker Autoscaler&lt;br/&gt;or Instance]

BuildType --&gt;|Container| OS2{OS?}
BuildType --&gt;|Shell| OS3{OS?}

OS2 --&gt;|Linux| L2[Docker&lt;br/&gt;Podman]
OS2 --&gt;|macOS| M2[Docker]
OS2 --&gt;|Windows| W2[Docker]

OS3 --&gt;|Linux| L3[Bash&lt;br/&gt;Zsh]
OS3 --&gt;|macOS| M3[Bash&lt;br/&gt;Zsh]
OS3 --&gt;|Windows| W3[PowerShell 5.1&lt;br/&gt;PowerShell 7.x]
OS3 --&gt;|Remote| R3[SSH&lt;br/&gt;(maintenance mode)]

classDef question fill:#e1f3fe,stroke:#333,stroke-width:2px,color:#000
classDef result fill:#dcffe4,stroke:#333,stroke-width:2px,color:#000
classDef start fill:#f9f9f9,stroke:#fff,stroke-width:2px,color:#000

class Start start;
class Auto,Platform,BuildType,OS1,OS2,OS3 question;
class K8s,L1,M1,W1,L2,M2,W2,L3,M3,W3,R3 result;</code></pre></details></div>
Note

SSH executor는 유지 관리 모드입니다. 중요 보안 업데이트는 수신되지만 새 기능은 계획되어 있지 않습니다. 또한 지원이 가장 적은 executor 중 하나입니다. 로컬 Shell 기반 빌드의 경우 Shell executor를 사용하는 것을 고려하세요.

아래 표는 각 executor에 대한 주요 사실을 보여주어 어떤 executor를 사용할지 결정하는 데 도움을 줍니다:

Note

SSH, Shell, VirtualBox, Parallels, Custom executor는 유지 관리 모드입니다. 중요 보안 업데이트는 수신되지만 새 기능은 계획되어 있지 않습니다.

Executor Docker Docker Autoscaler Instance Kubernetes SSH Shell VirtualBox Parallels Custom
모든 빌드에 대해 깨끗한 빌드 환경 조건부 1 조건부 1
이전 클론이 있으면 재사용 조건부 1 2 조건부 1
러너 파일 시스템 액세스 보호 3 조건부
러너 머신 마이그레이션 부분 부분
동시 빌드에 대한 제로 구성 지원 4 조건부 1
복잡한 빌드 환경 5 5 6 6
빌드 문제 디버깅 보통 보통 보통 보통 쉬움 쉬움 어려움 어려움 보통

각주:

  1. 프로비저닝하는 환경에 따라 다릅니다. 완전히 격리되거나 빌드 간에 공유될 수 있습니다.
  2. 동시성별 영구 빌드 볼륨 구성이 필요합니다.
  3. 러너의 파일 시스템 액세스가 보호되지 않으면 작업이 러너의 토큰과 다른 작업의 캐시 및 코드를 포함하여 전체 시스템에 액세스할 수 있습니다. ✓로 표시된 executor는 기본적으로 러너가 파일 시스템에 액세스하는 것을 허용하지 않습니다. 그러나 보안 결함이나 특정 구성에 의해 작업이 컨테이너를 벗어나 러너를 호스팅하는 파일 시스템에 액세스할 수 있습니다.
  4. 빌드가 빌드 머신에 설치된 서비스를 사용하는 경우 executor 선택이 가능하지만 문제가 있습니다.
  5. 수동 의존성 설치가 필요합니다.
  6. 예를 들어, Vagrant를 사용합니다.

Docker executor#

Docker executor는 컨테이너를 통해 깨끗한 빌드 환경을 제공합니다. 의존성 관리가 간단하며 Docker 이미지에 모든 의존성이 패키지되어 있습니다. 이 executor는 Runner 호스트에 Docker가 설치되어 있어야 합니다.

이 executor는 MySQL과 같은 추가 서비스를 지원합니다. 또한 대안적인 컨테이너 런타임으로 Podman도 수용합니다.

이 executor는 일관되고 격리된 빌드 환경을 유지합니다.

Docker Autoscaler executor#

Docker Autoscaler executor는 러너 매니저가 처리하는 작업을 수용하기 위해 온디맨드로 인스턴스를 생성하는 오토스케일 지원 Docker executor입니다. Docker executor를 래핑하여 모든 Docker executor 옵션과 기능을 지원합니다.

Docker Autoscaler는 오토스케일링을 위해 fleeting 플러그인을 사용합니다. Fleeting은 오토스케일된 인스턴스 그룹의 추상화로, Google Cloud, AWS, Azure와 같은 클라우드 공급자를 지원하는 플러그인을 사용합니다. 이 executor는 동적 워크로드 요구 사항이 있는 환경에 특히 적합합니다.

Instance executor#

Instance executor는 러너 매니저가 처리하는 예상 작업 볼륨을 수용하기 위해 온디맨드로 인스턴스를 생성하는 오토스케일 지원 executor입니다.

이 executor와 관련된 Docker Autoscale executor는 GitLab Runner Fleeting 및 Taskscaler 기술과 함께 작동하는 새로운 오토스케일링 executor입니다.

Instance executor도 오토스케일링을 위해 fleeting 플러그인을 사용합니다.

작업이 호스트 인스턴스, 운영 체제 및 연결된 장치에 대한 전체 액세스가 필요한 경우 Instance executor를 사용할 수 있습니다. Instance executor는 단일 테넌트 및 멀티 테넌트 작업을 수용하도록 구성할 수도 있습니다.

Kubernetes executor#

Kubernetes executor를 사용하여 빌드에 기존 Kubernetes 클러스터를 사용할 수 있습니다. executor는 Kubernetes 클러스터 API를 호출하고 각 GitLab CI/CD 작업에 대해 새 Pod(빌드 컨테이너와 서비스 컨테이너 포함)를 생성합니다. 이 executor는 클라우드 네이티브 환경에 특히 적합하며 뛰어난 확장성과 리소스 활용을 제공합니다.

유지 관리 모드의 Executor#

다음 executor는 중요 보안 업데이트를 수신하지만 새 기능은 계획되어 있지 않습니다:

호환성 차트#

각 executor에서 지원하는 기능:

Note

SSH, Shell, VirtualBox, Parallels, Custom executor는 유지 관리 모드입니다. 중요 보안 업데이트는 수신되지만 새 기능은 계획되어 있지 않습니다.

Executor Docker Docker Autoscaler Instance Kubernetes SSH Shell VirtualBox Parallels Custom
보안 변수
.gitlab-ci.yml: image ✓ (1) ✓ (1) ✓ ($CUSTOM_ENV_CI_JOB_IMAGE 사용)
.gitlab-ci.yml: services
.gitlab-ci.yml: cache
.gitlab-ci.yml: artifacts
스테이지 간 아티팩트 전달
GitLab Container Registry 프라이빗 이미지 사용 해당 없음 해당 없음 해당 없음 해당 없음 해당 없음 해당 없음
인터랙티브 웹 터미널

각주:

  1. GitLab Runner 14.2에서 추가된 지원. 자세한 내용은 기본 VM 이미지 재정의 섹션을 참고하세요.

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

Shells Bash PowerShell Desktop PowerShell Core sh
Windows ✗ 4 ✓ 3
Linux ✓ 1
macOS ✓ 1
FreeBSD ✓ 1

각주:

  1. 러너 등록 및 shell executor 작업의 기본 셸.
  2. Bash 셸은 Windows에서 지원되지 않습니다.
  3. docker-windowskubernetes executor 작업의 기본 셸.
  4. Windows에서 shell executor 작업의 기본 셸.

다양한 셸에서 인터랙티브 웹 터미널에 지원하는 시스템:

Shells Bash PowerShell Desktop PowerShell Core sh
Windows
Linux
macOS
FreeBSD

Docker가 아닌 executor를 위한 Git 요구 사항#

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

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

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

GitLab 인스턴스와의 Git 상호 작용을 인증하기 위해 GitLab Runner는 CI_JOB_TOKEN을 사용합니다. FF_GIT_URLS_WITHOUT_TOKENS 설정에 따라, 마지막으로 사용된 자격 증명이 사전 설치된 Git 자격 증명 헬퍼(예: Git credential manager)에 캐시될 수 있습니다. 이 헬퍼가 설치되어 자격 증명을 캐시하도록 구성된 경우에 한합니다: