GitLab Runner의 시스템 서비스

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed

GitLab Runner는 Go service 라이브러리를 사용하여 기본 OS를 감지하고, 초기화 시스템에 따라 서비스 파일을 설치합니다.

note
패키지 service는 프로그램을 서비스(데몬)로 설치, 제거, 시작, 중지 및 실행합니다. Windows XP+, Linux (systemd, Upstart 및 System V) 및 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 유닛 구성에 추가한 후에는 러너를 중지할 수 있습니다. Upstart도 위의 systemd와 동일하게 동작합니다.