GitLab Runner가 지원하는 셸의 유형
GitLab Runner은 실행 파일을 생성하는 셸 스크립트 생성기를 구현하여 다양한 시스템에서 빌드를 실행할 수 있습니다.
셸 스크립트에는 빌드의 모든 단계를 실행하는 명령이 포함되어 있습니다:
git clone
- 빌드 캐시 복원
- 빌드 명령
- 빌드 캐시 업데이트
- 빌드 아티팩트 생성 및 업로드
셸에는 구성 옵션이 없습니다. 빌드 단계는 .gitlab-ci.yml
의 script
지시어에서 정의된 명령에서 받습니다.
지원되는 셸은 다음과 같습니다:
셸 | 상태 | 설명 |
---|---|---|
bash
| 완벽히 지원됨 | Bash (Bourne Again Shell). 모든 명령은 Bash 환경에서 실행됩니다 (모든 Unix 시스템의 기본값) |
sh
| 완벽히 지원됨 | Sh (Bourne shell). 모든 명령은 Sh 환경에서 실행됩니다 (모든 Unix 시스템의 기본값의 대체) |
powershell
| 완벽히 지원됨 | PowerShell 스크립트. 모든 명령은 PowerShell 데스크탑 환경에서 실행됩니다. |
pwsh
| 완벽히 지원됨 | PowerShell 스크립트. 모든 명령은 PowerShell 코어 환경에서 실행됩니다. GitLab Runner 14.0 이상에서는 Windows에 새로운 실행 파일을 등록할 때 기본값입니다. |
기본값 이외의 특정 셸을 사용하려면 config.toml
파일에 셸을 지정해야 합니다.
Sh/Bash 셸
이것은 모든 Unix 기반 시스템에서 사용되는 기본 셸입니다. .gitlab-ci.yml
에서 사용된 bash 스크립트는 다음 명령어 중 하나로 전송하여 실행됩니다:
# 빌드를 다른 사용자의 환경에서 실행해야 하는 경우 (셸 실행 파일)
cat 생성된-bash-스크립트 | su --shell /bin/bash --login 사용자
# 현재 사용자를 사용하지만 로그인 환경에서 실행해야 하는 경우
cat 생성된-bash-스크립트 | /bin/bash --login
# Docker 환경에서 실행해야 하는 경우
cat 생성된-bash-스크립트 | /bin/bash
셸 프로필 로딩
일부 실행 파일의 경우, 러너는 위에서 보여준대로 --login
플래그를 전달하여 셸 프로필도 로드합니다. .bashrc
, .bash_logout
, 또는 기타 점 파일에 있는 내용은 작업 중에 실행됩니다.
환경을 준비하는 단계에서 작업이 실패하면 셸 프로필에서 실패를 초래하는 것이 있을 수 있습니다. 일반적인 실패는 .bash_logout에서 콘솔을 지우려고 시도하는 경우입니다.
이 오류를 해결하려면 /home/gitlab-runner/.bash_logout
을 확인하세요. 예를 들어, .bash_logout
파일에 다음과 같은 스크립트 부분이 있으면 주석 처리하고 파이프라인을 다시 시작하세요:
if [ "$SHLVL" = 1 ]; then
[ -x /usr/bin/clear_console ] && /usr/bin/clear_console -q
fi
셸 프로필을 로드하는 실행 파일:
shell
-
parallels
( 대상 가상 머신의 셸 프로필이 로드됨) -
virtualbox
( 대상 가상 머신의 셸 프로필이 로드됨) -
ssh
( 대상 머신의 셸 프로필이 로드됨)
PowerShell
Windows에서 새로운 러너가 GitLab Runner 12.0-13.12를 사용하여 등록되면 PowerShell Desktop Edition이 기본 셸입니다. 14.0 이상에서는 기본값이 PowerShell Core Edition입니다.
PowerShell은 다른 사용자의 환경에서 빌드를 실행하는 것을 지원하지 않습니다.
생성된 PowerShell 스크립트는 해당 내용을 파일에 저장하고 다음 명령에 파일 이름을 전달하여 실행됩니다:
-
PowerShell Desktop Edition의 경우:
powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -Command generated-windows-powershell.ps1
-
PowerShell Core Edition의 경우:
pwsh -NoProfile -NonInteractive -ExecutionPolicy Bypass -Command generated-windows-powershell.ps1
다음은 PowerShell 스크립트의 예시입니다:
여기에 PowerShell 스크립트 예시가 있습니다.
Windows 배치 실행
이전에 PowerShell로 이식되지 않은 이전 배치 스크립트의 경우 PowerShell에서 Start-Process "cmd.exe" "/c C:\Path\file.bat"
를 사용하여 배치 스크립트를 실행할 수 있습니다.
기본으로 PowerShell이 설정된 경우 CMD 셸에 액세스
프로젝트: GitLab CI에서 기본 PowerShell에서 CMD 호출은 러너에 기본 셸로 PowerShell이 설정된 경우 CMD 셸에 액세스하는 방법을 보여줍니다.
PowerShell 예제 작동 영상 안내
GitLab CI에서 PowerShell로 적용하는 방법 영상은 GitLab CI의 PowerShell 파이프라인 Guided Exploration 프로젝트의 예시입니다. 다음에서 테스트되었습니다.
- GitLab.com의 Windows 호스팅 러너에서 Windows PowerShell 및 PowerShell Core 7으로 실행
- Docker-Machine 러너에서 Linux 컨테이너에서 PowerShell Core 7으로 실행
예시는 본인의 그룹이나 인스턴스로 복사하여 테스트할 수 있습니다. 프로젝트 페이지에서 어떤 다른 GitLab CI 패턴을 보여주는지에 대한 자세한 내용을 확인할 수 있습니다.