GitLab Runner 시스템 서비스

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

GitLab Runner은 기초 OS를 감지하고 최종적으로 초기화 시스템에 기반하여 서비스 파일을 설치하는데 Go service library를 사용합니다.

note
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 configuration setting에서 정의되는 변수와 다릅니다.

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와 동일하게 동작합니다.