正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

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.service

Upstartのカスタマイズ

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と同じ処理を行います。