GitLab Runner 시스템 서비스
GitLab Runner은 기반이 되는 OS를 감지하고 최종적으로 init 시스템에 기반하여 서비스 파일을 설치하는 데 Go service
라이브러리를 사용합니다.
service
는 서비스(데몬)로 프로그램을 설치, 제거, 시작, 중지 및 실행합니다. Windows XP+, Linux/(systemd | Upstart | SysV), macOS/Launchd를 지원합니다.GitLab Runner를 설치하면 서비스 파일이 자동으로 생성됩니다:
-
systemd:
/etc/systemd/system/gitlab-runner.service
-
upstart:
/etc/init/gitlab-runner
사용자 정의 환경 변수 설정
사용자 정의 환경 변수로 GitLab Runner를 실행하려면 다음과 같이 설정할 수 있습니다. 예를 들어, 실행기의 환경에 GOOGLE_APPLICATION_CREDENTIALS
를 정의하려는 경우입니다. 이는 러너에서 실행되는 모든 작업에 자동으로 추가되는 변수를 정의하는 environment
구성 설정과 다릅니다.
systemd 사용자 정의
systemd를 사용하는 러너의 경우, 각 변수를 내보내기 위해 /etc/systemd/system/gitlab-runner.service.d/env.conf
를 생성하고 Environment=key=value
라인을 사용합니다. 예:
[Service]
Environment=GOOGLE_APPLICATION_CREDENTIALS=/etc/gitlab-runner/gce-credentials.json
그런 다음 설정을 다시 로드하세요:
systemctl daemon-reload
systemctl restart gitlab-runner.service
upstart 사용자 정의
upstart를 사용하는 러너의 경우, /etc/init/gitlab-runner.override
를 생성하고 원하는 변수를 내보내세요. 예:
export GOOGLE_APPLICATION_CREDENTIALS="/etc/gitlab-runner/gce-credentials.json"
이 변경 내용이 적용되려면 러너를 다시 시작하세요.
기본 중지 동작 재정의
일부 경우에는 서비스의 기본 동작을 무시하고 싶을 수 있습니다.
예를 들어, GitLab Runner를 업그레이드할 때, 모든 실행 중인 작업이 완료될 때까지 서비스를 안전하게 중지해야 합니다. 그러나 systemd, upstart 또는 기타 서비스는 프로세스를 거의 즉시 다시 시작할 수 있습니다.
따라서 GitLab Runner를 업그레이드할 때 설치 스크립트는 그 시점에서 새 작업을 처리하고 있을 프로세스를 종료시킨 후 러너 프로세스를 종료하고 다시 시작합니다.
systemd 재정의
systemd를 사용하는 러너의 경우, 다음 내용으로 /etc/systemd/system/gitlab-runner.service.d/kill.conf
를 작성하세요:
[Service]
TimeoutStopSec=7200
KillSignal=SIGQUIT
systemd 유닛 구성에 이 두 설정을 추가한 후 러너를 중지하고 systemd가 프로세스를 중지하는 데 SIGQUIT
을 사용합니다. 또한 종료 명령 전에 2시간의 제한 시간이 설정되어 있어서, 이 시간이 지나도록 작업이 안전하게 종료되지 않으면 systemd가 SIGKILL
을 사용하여 프로세스를 종료합니다.
upstart 재정의
upstart를 사용하는 러너의 경우, 다음 내용으로 /etc/init/gitlab-runner.override
를 작성하세요:
kill signal SIGQUIT
kill timeout 7200
위 설정을 추가한 후 러너를 중지하고 upstart는 systemd와 정확히 같은 동작을 수행합니다.