VirtualBox
VirtualBox를 사용하면 VirtualBox의 가상화를 사용하여 모든 빌드에 대한 깨끗한 빌드 환경을 제공할 수 있습니다. 이 실행자는 VirtualBox에서 실행할 수 있는 모든 시스템을 지원합니다. 유일한 요구 사항은 가상 머신이 SSH 서버를 노출하고 Bash 또는 PowerShell과 호환되는 셸을 제공하는 것뿐입니다.
개요
프로젝트의 소스 코드는 다음 경로에 체크아웃됩니다: ~/builds/<namespace>/<project-name>
.
여기서:
-
<namespace>
은 GitLab에 저장된 프로젝트가 있는 네임스페이스입니다. -
<project-name>
은 GitLab에 저장된 프로젝트의 이름입니다.
~/builds
디렉토리를 오버라이드하려면 config.toml
의 [[runners]]
섹션 아래에 builds_dir
옵션을 지정하십시오
(고급 구성 문서 참조).
GIT_CLONE_PATH
를 사용하여 작업별로 사용자 정의 빌드 디렉토리를 정의할 수도 있습니다.
새 기본 가상 머신 만들기
-
VirtualBox을 설치합니다.
- Windows에서 실행하는 경우, VirtualBox가 기본 위치(예:
%PROGRAMFILES%\Oracle\VirtualBox
)에 설치된 경우, GitLab 러너가 자동으로 감지합니다. 그렇지 않으면gitlab-runner
프로세스의PATH
환경 변수에 설치 폴더를 추가해야 합니다.
- Windows에서 실행하는 경우, VirtualBox가 기본 위치(예:
- VirtualBox에서 가상 머신을 가져오거나 새 가상 머신을 만듭니다.
- Network Adapter 1을 “NAT”으로 구성합니다(현재 GitLab 러너가 게스트로 SSH 연결을할 수 있는 유일한 방법입니다).
- (옵션) 다른 Network Adapter를 “Bridged networking”으로 구성하여 게스트에서 인터넷에 액세스합니다(예:).
- 새 가상 머신에 로그인합니다.
- Windows 가상 머신의 경우 Windows VM용 체크리스트를 참조하세요.
- OpenSSH 서버를 설치합니다.
- 빌드에 필요한 모든 다른 종속성을 설치합니다.
- 작업 아티팩트를 다운로드하거나 업로드하려면 VM 내부에
gitlab-runner
를 설치합니다. - 로그 아웃하고 가상 머신을 종료합니다.
가상 머신을 프로비저닝하는 등의 자동화 도구를 사용하는 것도 괜찮습니다.
새 러너 만들기
- VirtualBox를 실행 중인 호스트에 GitLab 러너를 설치합니다.
-
gitlab-runner register
명령어로 새 러너를 등록합니다. -
virtualbox
실행자를 선택합니다. - 이전에 만든 기본 가상 머신의 이름을 입력합니다(가상 머신의 General > Basic > Name 설정에서 찾을 수 있음).
- 가상 머신의 SSH
user
및password
또는identity_file
경로를 입력합니다.
동작 방식
새 빌드가 시작될 때:
1. 가상 머신의 고유한 이름을 생성합니다: runner-<short-token>-concurrent-<id>
1. 가상 머신이 존재하지 않으면 복제합니다.
1. SSH 서버에 액세스하는 포트 포워딩 규칙을 생성합니다.
1. GitLab 러너가 가상 머신의 스냅샷을 시작하거나 복원합니다.
1. GitLab 러너가 SSH 서버에 액세스 가능할 때까지 기다립니다.
1. GitLab 러너가 실행중인 가상 머신의 스냅샷을 만듭니다(다음 빌드를 가속화하기 위해 수행됨).
1. GitLab 러너가 가상 머신에 연결하고 빌드를 실행합니다.
1. 활성화된 경우, gitlab-runner
바이너리를 사용하여 작업 아티팩트 업로드를 수행합니다.
1. GitLab 러너가 가상 머신을 중지하거나 종료합니다.
Windows VM용 체크리스트
Windows에서 VirtualBox를 사용하기 위해 Cygwin 또는 PowerShell을 설치할 수 있습니다.
Cygwin 사용
- Cygwin을 설치합니다.
- Cygwin에서
sshd
및 Git을 설치합니다(Git for Windows는 사용하지 마십시오, 경로 문제가 많이 발생할 수 있습니다!). - Git LFS를 설치합니다.
-
sshd
를 구성하고 서비스로 설정합니다(Cygwin 위키 참조). - Windows 방화벽에 TCP 22번 포트로 들어오는 트래픽을 허용하는 규칙을 만듭니다.
- GitLab 서버를
~/.ssh/known_hosts
에 추가합니다. - Cygwin과 Windows 간의 경로 전환을 위해
cygpath
유틸리티를 사용합니다.
네이티브 OpenSSH 및 PowerShell 사용
- PowerShell을 설치합니다.
- OpenSSH를 설치하고 구성합니다.
- Git for Windows를 설치합니다.
-
기본 셸을
pwsh
로 구성합니다. 올바른 전체 경로로 예제를 업데이트하세요:New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "$PSHOME\pwsh.exe" -PropertyType String -Force
-
config.toml
에 셸pwsh
를 추가합니다.