GitLab Runnerのシステムサービス
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
GitLab Runnerは、基盤となるOSを検出し、initシステムに基づいてサービスファイルをインストールするために、Go serviceライブラリを使用します。
パッケージ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をRunnerの環境で定義したい場合などです。このアクションは、Runnerによって実行されるすべてのジョブに自動的に追加される変数を定義する、environment設定とは異なります。
systemdのカスタマイズ
systemdを使用するRunnerの場合、/etc/systemd/system/gitlab-runner.service.d/env.confを作成し、エクスポートする変数ごとに1つのEnvironment=key=value行を使用します。
例:
[Service]
Environment=GOOGLE_APPLICATION_CREDENTIALS=/etc/gitlab-runner/gce-credentials.json次に、設定をリロードします:
systemctl daemon-reload
systemctl restart gitlab-runner.serviceUpstartのカスタマイズ
Upstartを使用するRunnerの場合、/etc/init/gitlab-runner.overrideを作成し、目的の変数をエクスポートします。
例:
export GOOGLE_APPLICATION_CREDENTIALS="/etc/gitlab-runner/gce-credentials.json"これを有効にするには、Runnerを再起動してください。
デフォルトの停止動作をオーバーライドする
場合によっては、サービスのデフォルトの動作をオーバーライドしたい場合があります。
例えば、GitLab Runnerをアップグレードする際、すべての実行中のジョブが終了するまで、安全に停止する必要があります。しかし、systemd、Upstart、またはその他のサービスは、気づかないうちにプロセスをすぐに再起動する可能性があります。
したがって、GitLab Runnerをアップグレードすると、インストールスクリプトは、当時新しいジョブを処理していたであろうRunnerプロセスを強制終了し、再起動します。
systemdのオーバーライド
systemdを使用するRunnerの場合、/etc/systemd/system/gitlab-runner.service.d/kill.confを以下の内容で作成します:
[Service]
TimeoutStopSec=7200
KillSignal=SIGQUITこれら2つの設定をsystemdユニット設定に追加した後、Runnerを停止できます。Runnerが停止すると、systemdはプロセスを停止するためのキルシグナルとしてSIGQUITを使用します。さらに、停止コマンドには2時間のタイムアウトが設定されます。このタイムアウトまでにいずれかのジョブが正常に終了しない場合、systemdはSIGKILLを使用してプロセスを強制終了します。
Upstartのオーバーライド
Upstartを使用するRunnerの場合、/etc/init/gitlab-runner.overrideを以下の内容で作成します:
kill signal SIGQUIT
kill timeout 7200これら2つの設定をUpstartユニット設定に追加した後、Runnerを停止できます。Upstartは、上記のsystemdと同じ処理を行います。