GitLab Runner가 지원하는 셸 유형
GitLab Runner가 지원하는 셸 유형(bash, sh, PowerShell)과 각 셸의 동작 방식을 설명합니다.
GitLab Runner는 다양한 시스템에서 빌드를 실행할 수 있는 셸 스크립트 생성기를 구현합니다. 셸 스크립트에는 빌드의 모든 단계를 실행하는 명령이 포함됩니다: git clone 빌드 캐시 복원 빌드 명령 빌드 캐시 업데이트 빌드 아티팩트 생성 및 업로드 셸에는 구성 옵션이 없습니다. 빌드 단계는 .gitlab-ci.yml 의 script 지시문 에 정의된 명령에서 수신됩니다. 지원되는 셸은 다음과 같습니다: 셸 상태 설명 bash 완전 지원 Bash (Bourne Again Shell). 모든 명령이 Bash 컨텍스트에서 실행됩니다(모든 Unix 시스템의 기본값). sh 완전 지원 Sh (Bourne shell). 모든 명령이 Sh 컨텍스트에서 실행됩니다(모든 Unix 시스템에서 bash 의 폴백). powershell 완전 지원 PowerShell 스크립트. 모든 명령이 PowerShell Desktop 컨텍스트에서 실행됩니다. pwsh 완전 지원 PowerShell 스크립트. 모든 명령이 PowerShell Core 컨텍스트에서 실행됩니다. Windows에서 새 러너를 등록할 때 기본값입니다. 기본값이 아닌 특정 셸을 선택하려면 config.toml 파일에서 셸을 지정 해야 합니다. Sh/Bash 셸 # Sh/Bash는 모든 Unix 기반 시스템에서 사용되는 기본 셸입니다. .gitlab-ci.yml 에서 사용되는 bash 스크립트는 다음 명령 중 하나에 셸 스크립트를 파이핑하여 실행됩니다: # 이 명령은 빌드를 다른 사용자 컨텍스트에서 실행해야 하는 경우 사용됩니다(shell executor) cat generated-bash-script | su --shell /bin/bash --login user # 이 명령은 현재 사용자로 실행하지만 로그인 환경에서 실행해야 하는 경우 사용됩니다 cat generated-bash-script | /bin/bash --login # 이 명령은 Docker 환경에서 실행해야 하는 경우 사용됩니다 cat generated-bash-script | /bin/bash 셸 프로파일 로딩 # 특정 executor의 경우, 러너는 위와 같이 --login 플래그를 전달하며, 이는 셸 프로파일도 로드합니다. .bashrc , .bash_logout , 또는 다른 dotfile 에 있는 모든 내용이 잡에서 실행됩니다. 잡이 Prepare environment 단계에서 실패 하는 경우, 셸 프로파일의 무언가가 실패를 유발하고 있을 가능성이 높습니다. 일반적인 실패 원인은 콘솔을 지우려는 .bash_logout 이 있는 경우입니다. 이 오류를 해결하려면 /home/gitlab-runner/.bash_logout 을 확인하십시오. 예를 들어 .bash_logout 파일에 다음과 같은 스크립트 섹션이 있다면 해당 부분을 주석 처리하고 파이프라인을 재시작하십시오: if [ "$SHLVL" = 1 ]; then [ -x /usr/bin/clear_console ] && /usr/bin/clear
