GitLab Runnerのシステムサービス

GitLab RunnerはGoservice libraryを使って内部OSを検出し、最終的にinitシステムに基づいてサービスファイルをインストールします。

NOTE: 注:** は、インストール/アンインストール、起動/停止、およびサービス (デーモン) としてのプログラムの実行を行います。 現在、Windows XP+、Linux/(systemd Upstart SysV)、および macOS/Launchd をサポートしています。

GitLab Runnerがインストールれると、サービスファイルが自動的に作成されます:

  • systemd: /etc/systemd/system/gitlab-runner.service
  • アップスタート /etc/init/gitlab-runner

デフォルトのサービスファイルの上書き

場合によっては、サービスのデフォルトの動作をオーバーライドしたいこともあるでしょう。

例えば、runner をアップグレードするとき、実行中のジョブがすべて終了するまで優雅に停止させたいと思うかもしれませんが、systemd や upstart などのサービスはほとんど気づかずにプロセスを再起動してしまうかもしれません。

そのため、Runnerをアップグレードするとき、インストールスクリプトはRunnerのプロセスを終了し、再起動します。

systemd のオーバーライド

systemdを使用するRunnerの場合は、以下の内容で/etc/systemd/system/gitlab-runner.service.d/kill.conf

[Service]
TimeoutStopSec=7200
KillSignal=SIGQUIT

これら2つの設定をsystemdユニットの設定に追加した後、Runnerを停止することができます。systemdはkillシグナルとしてSIGQUIT 、プロセスを停止します。さらに、stopコマンドには2hのタイムアウトが設定されています。つまり、このタイムアウトまでにジョブが優雅に終了しない場合、systemdはプロセスをSIGKILL

アップスタートの上書き

upstart を使用する Runner は、以下の内容で/etc/init/gitlab-runner.override を作成してください:

kill signal SIGQUIT
kill timeout 7200

これら2つの設定を upstart ユニット設定に追加した後、Runner を停止すれば、upstart は上記の systemd と全く同じことをします。