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 と全く同じことをします。