GitLab Runnerのシステムサービス
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
GitLab Runnerは、基盤となるOSを検出し、最終的に初期化システムに基づいてサービスファイルをインストールするために、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を実行できます。たとえば、Runnerの環境変数にGOOGLE_APPLICATION_CREDENTIALSを定義するとします。このアクションは、environment設定とは異なります。これは、Runnerによって実行されるすべてのジョブに自動的に追加される変数を定義します。
systemdのカスタマイズ
systemdを使用するRunnerの場合は、エクスポートする変数ごとに1つのEnvironment=key=value行を使用して、/etc/systemd/system/gitlab-runner.service.d/env.confを作成します。
次に例を示します:
[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と同じことを行います。