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

GitLab Runnerのコマンド

  • プラン: Free、Premium、Ultimate
  • 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated

GitLab Runnerには、ビルドの登録、管理、実行に使用する一連のコマンドがあります。

コマンドのリストは、以下を実行して確認できます:

gitlab-runner --help

コマンドの後に--helpを付加すると、そのコマンドに固有のヘルプページが表示されます:

gitlab-runner <command> --help

環境変数を使用する

ほとんどのコマンドは、コマンドへ設定を渡す方法として環境変数をサポートしています。

特定のコマンドに対して--helpを呼び出すと、環境変数の名前を確認できます。たとえば、runコマンドのヘルプメッセージは次のようになります:

gitlab-runner run --help

出力は次のようになります:

NAME:
   gitlab-runner run - run multi runner service

USAGE:
   gitlab-runner run [command options] [arguments...]

OPTIONS:
   -c, --config "/Users/ayufan/.gitlab-runner/config.toml"      Config file [$CONFIG_FILE]

デバッグモードで実行する

未定義の動作またはエラーの原因を調べる場合は、デバッグモードを使用します。

コマンドをデバッグモードで実行するには、コマンドの先頭に--debugを追加します:

gitlab-runner --debug <command>

スーパーユーザー権限

GitLab Runnerの設定にアクセスするコマンドは、スーパーユーザー(root)として実行する場合には動作が異なります。ファイルの場所は、コマンドを実行するユーザーに応じて異なります。

gitlab-runnerコマンドを実行すると、実行中のモードが表示されます:

$ gitlab-runner run

INFO[0000] Starting multi-runner from /Users/ayufan/.gitlab-runner/config.toml ...  builds=0
WARN[0000] Running in user-mode.
WARN[0000] Use sudo for system-mode:
WARN[0000] $ sudo gitlab-runner...

user-modeが使用するモードであると確信できる場合は、このモードを使用してください。それ以外の場合は、コマンドの先頭にsudoを付加します:

$ sudo gitlab-runner run

INFO[0000] Starting multi-runner from /etc/gitlab-runner/config.toml ...  builds=0
INFO[0000] Running in system-mode.

Windowsの場合、コマンドプロンプトを管理者として実行する必要がある場合があります。

設定ファイル

GitLab Runnerの設定ではTOML形式が使用されます。

編集するファイルは次の場所にあります:

  1. *nixシステムでGitLab Runnerがスーパーユーザー(root)として実行されている場合は/etc/gitlab-runner/config.toml
  2. *nixシステムでGitLab Runnerが非rootユーザーとして実行されている場合は~/.gitlab-runner/config.toml
  3. その他のシステムでは./config.toml

ほとんどのコマンドは、カスタム設定ファイルを指定する引数を受け入れるため、1つのマシンで複数の異なる設定を持つことができます。カスタム設定ファイルを指定するには、-cまたは--configフラグを使用するか、CONFIG_FILE環境変数を使用します。

シグナル

システムシグナルを使用してGitLab Runnerを操作できます。以下のコマンドは、以下のシグナルをサポートしています:

コマンドシグナルアクション
registerSIGINTRunnerの登録をキャンセルし、すでに登録されている場合は削除します。
runrun-singleSIGINTSIGTERM実行中のすべてのビルドを中断し、できるだけ早く終了します。すぐに終了するには2回使用します(forceful shutdown(強制シャットダウン))。
runrun-singleSIGQUIT新しいビルドの受け入れを停止します。実行中のビルドが完了したらすぐに終了します(graceful shutdown(正常なシャットダウン))。
runSIGHUP設定ファイルを強制的に再読み込みします。

たとえばRunnerの設定ファイルを強制的に再読み込みするには、次のように実行します:

sudo kill -SIGHUP <main_runner_pid>

正常なシャットダウンの場合は次のようになります:

sudo kill -SIGQUIT <main_runner_pid>

shellまたはdocker executorを使用している場合は、正常なシャットダウンのためにkillallまたはpkillnot(使用しないでください)。これによりサブプロセスも強制終了されるため、シグナルが不適切に処理される可能性があります。ジョブを処理するメインプロセスでのみ使用してください。

一部のオペレーティングシステムは、サービスが失敗すると自動的に再起動するように設定されています(一部のプラットフォームではデフォルトです)。ご使用のオペレーティングシステムでこのように設定されている、上記のシグナルによってRunnerがシャットダウンされると、自動的にRunnerが再起動される可能性があります。

コマンドの概要

引数を指定せずにgitlab-runnerを実行すると、次のように表示されます:

NAME:
   gitlab-runner - a GitLab Runner

USAGE:
   gitlab-runner [global options] command [command options] [arguments...]

VERSION:
   17.10.1 (ef334dcc)

AUTHOR:
   GitLab Inc. <support@gitlab.com>

COMMANDS:
   list                  List all configured runners
   run                   run multi runner service
   register              register a new runner
   reset-token           reset a runner's token
   install               install service
   uninstall             uninstall service
   start                 start service
   stop                  stop service
   restart               restart service
   status                get status of a service
   run-single            start single runner
   unregister            unregister specific runner
   verify                verify all registered runners
   wrapper               start multi runner service wrapped with gRPC manager server
   fleeting              manage fleeting plugins
   artifacts-downloader  download and extract build artifacts (internal)
   artifacts-uploader    create and upload build artifacts (internal)
   cache-archiver        create and upload cache artifacts (internal)
   cache-extractor       download and extract cache artifacts (internal)
   cache-init            changed permissions for cache paths (internal)
   health-check          check health for a specific address
   proxy-exec            execute internal commands (internal)
   read-logs             reads job logs from a file, used by kubernetes executor (internal)
   help, h               Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --cpuprofile value           write cpu profile to file [$CPU_PROFILE]
   --debug                      debug mode [$RUNNER_DEBUG]
   --log-format value           Choose log format (options: runner, text, json) [$LOG_FORMAT]
   --log-level value, -l value  Log level (options: debug, info, warn, error, fatal, panic) [$LOG_LEVEL]
   --help, -h                   show help
   --version, -v                print the version

以下で各コマンドの動作を詳しく説明します。

新しいRunnerを登録するか、Runnerが登録されている場合にリストして検証するには、次のコマンドを使用します。

これらのコマンドでは次の引数がサポートされています:

パラメータデフォルト説明
--config設定ファイルセクションを参照使用するカスタム設定ファイルを指定します

gitlab-runner register

このコマンドは、GitLab Runners APIを使用して、GitLabにRunnerを登録します。

登録されたRunnerは設定ファイルに追加されます。1つのGitLab Runnerインストールで複数の設定を使用できます。gitlab-runner registerを実行すると、新しい設定エントリが追加されます。以前のエントリは削除されません。

Runnerは次のいずれかの方法で登録できます:

  • インタラクティブ
  • 非インタラクティブ

RunnerはGitLab Runners APIを使用して直接登録できますが、設定は自動的に生成されません。

インタラクティブ登録

このコマンドは通常、インタラクティブモード(デフォルト)で使用されます。Runnerの登録中に複数の質問が表示されます。

この質問に対する回答を事前に入力するには、登録コマンドの呼び出し時に引数を追加します:

gitlab-runner register --name my-runner --url "http://gitlab.example.com" --token my-authentication-token

あるいはregisterコマンドよりも前に環境変数を設定します:

export CI_SERVER_URL=http://gitlab.example.com
export RUNNER_NAME=my-runner
export CI_SERVER_TOKEN=my-authentication-token
gitlab-runner register

設定可能なすべての引数と環境を確認するには、以下を実行します:

gitlab-runner register --help

非インタラクティブ登録

非インタラクティブ/無人モードで登録を使用することができます。

登録コマンドの呼び出し時に引数を指定できます:

gitlab-runner register --non-interactive <other-arguments>

あるいはregisterコマンドよりも前に環境変数を設定します:

<other-environment-variables>
export REGISTER_NON_INTERACTIVE=true
gitlab-runner register

ブール値パラメータは、コマンドラインで--key={true|false}を使用して渡す必要があります。

[[runners]]設定テンプレートファイル

設定テンプレートファイル機能を使用して、Runnerの登録中に追加のオプションを設定できます。

gitlab-runner list

このコマンドは、設定ファイルに保存されているすべてのRunnerをリストします。

gitlab-runner verify

このコマンドは、登録されたRunnerがGitLabに接続できることを確認します。ただし、RunnerがGitLab Runnerサービスで使用されているかどうかは検証しません。出力例を次に示します:

Verifying runner... is alive                        runner=fee9938e
Verifying runner... is alive                        runner=0db52b31
Verifying runner... is alive                        runner=826f687f
Verifying runner... is alive                        runner=32773c0f

GitLabから削除された古いRunnerを削除するには、次のコマンドを実行します。

この操作は元に戻すことができません。この操作では設定ファイルが更新されます。このため、実行する前にconfig.tomlのバックアップがあることを確認してください。

gitlab-runner verify --delete

gitlab-runner unregister

このコマンドは、GitLab Runners APIを使用して、登録されているRunnerを登録解除します。

次のいずれかを指定する必要があります:

  • 完全なURLとRunnerのトークン。
  • Runnerの名前。

--all-runnersオプションを使用すると、アタッチされているすべてのRunnerの登録が解除されます。

RunnerはGitLab Runners APIで登録解除できますが、ユーザーに対して設定は変更されません。

  • Runner登録トークンを使用してRunnerが作成された場合、Runner認証トークンを指定したgitlab-runner unregisterを実行すると、Runnerが削除されます。
  • RunnerがGitLab UIまたはRunners APIで作成された場合、Runner認証トークンを指定してgitlab-runner unregisterを実行すると、Runnerマネージャーが削除されますが、Runnerは削除されません。Runnerを完全に削除するには、Runner管理ページでRunnerを削除するか、DELETE /runners REST APIエンドポイントを使用します。

1つのRunnerを登録解除するには、まずgitlab-runner listを実行してRunnerの詳細を取得します:

test-runner     Executor=shell Token=t0k3n URL=http://gitlab.example.com

次にこの情報を使用して、次のいずれかのコマンドで登録を解除します。

この操作は元に戻すことができません。この操作では設定ファイルが更新されます。このため、実行する前にconfig.tomlのバックアップがあることを確認してください。

URLおよびトークンを指定

gitlab-runner unregister --url "http://gitlab.example.com/" --token t0k3n

名前を指定

gitlab-runner unregister --name test-runner

指定された名前のRunnerが複数ある場合、最初のRunnerのみが削除されます。

すべてのRunner

gitlab-runner unregister --all-runners

gitlab-runner reset-token

このコマンドはGitLab Runners APIを使用して、Runner IDまたは現在のトークンのいずれかでRunnerのトークンをリセットします。

Runnerの名前(またはURLとID)が必要です。Runner IDでリセットする場合はオプションのPATが必要です。PATとRunner IDは、トークンがすでに期限切れになっている場合に使用することを目的としています。

--all-runnersオプションを使用すると、アタッチされているRunnerのすべてのトークンがリセットされます。

Runnerの現在のトークンを使用

gitlab-runner reset-token --name test-runner

PATとRunner名を使用

gitlab-runner reset-token --name test-runner --pat PaT

PAT、GitLab URL、およびRunner IDを使用

gitlab-runner reset-token --url "https://gitlab.example.com/" --id 12345 --pat PaT

すべてのRunner

gitlab-runners reset-token --all-runners

次のコマンドを使用すると、Runnerをシステムサービスまたはユーザーサービスとして管理できます。Runnerサービスをインストール、アンインストール、開始、および停止するために使用します。

すべてのサービス関連コマンドは、次の引数を受け入れます:

パラメータデフォルト説明
--servicegitlab-runnerカスタムサービス名を指定します
--config設定ファイルを参照使用するカスタム設定ファイルを指定します
--user-serviceユーザーサービスを参照ユーザーサービス(systemd)として実行するようにGitLab Runnerを設定します

gitlab-runner install

このコマンドは、GitLab Runnerをサービスとしてインストールします。受け入れられる引数のセットは、実行するシステムに応じて異なります。

Windows(Windows)で実行する場合、またはスーパーユーザーとして実行する場合は、--userフラグが受け入れられます。このフラグにより、shell(Shell) executorで実行されるビルドの権限を削除できます。

パラメータデフォルト説明
--servicegitlab-runner使用するサービス名を指定します
--config設定ファイルを参照使用するカスタム設定ファイルを指定します
--syslogtrue(systemd以外のシステムの場合)サービスをシステムログ生成サービスと統合するかどうかを指定します
--working-directory現在のディレクトリshell(Shell) executorを使用してビルドを実行するときにすべてのデータを保存するルートディレクトリを指定します
--userrootビルドを実行するユーザーを指定します
--passwordなしビルドを実行するユーザーのパスワードを指定します

gitlab-runner uninstall

このコマンドは、GitLab Runnerがサービスとして実行されないようにするため、GitLab Runnerを停止してアンインストールします。

gitlab-runner start

このコマンドは、GitLab Runnerサービスを開始します。

gitlab-runner stop

このコマンドは、GitLab Runnerサービスを停止します。

gitlab-runner restart

このコマンドは、GitLab Runnerサービスを停止してから開始します。

gitlab-runner status

このコマンドは、GitLab Runnerサービスの状態を出力します。サービスが実行中の場合の終了コードは0で、サービスが実行されていない場合は0以外です。

複数のサービス

--serviceフラグを指定することで、複数の個別の設定を使用して複数のGitLab Runnerサービスをインストールできます。

ユーザーサービス

一部のinitシステム(systemdなど)を使用することにより、サービスをユーザーサービスとして管理できます。initシステムにこの機能が含まれている場合、gitlab-runnerサービスをユーザーサービスとして管理するには、サービス関連のコマンドを実行する際に--user-serviceフラグを指定します。

このコマンドを使用すると、GitLabからビルドをフェッチして処理できます。

gitlab-runner run

gitlab-runner runコマンドは、GitLab Runnerがサービスとして開始されたときに実行されるメインコマンドです。config.tomlから定義されているすべてのRunnerを読み取り、それらすべてを実行しようとします。

コマンドは実行され、シグナルを受信するまで動作します。

次のパラメータを受け入れます。

パラメータデフォルト説明
--config設定ファイルを参照使用するカスタム設定ファイルを指定します
--working-directory現在のディレクトリshell(Shell) executorを使用してビルドを実行するときにすべてのデータを保存するルートディレクトリを指定します
--user現在のユーザービルドを実行するユーザーを指定します
--syslogfalseすべてのログをSysLog(Unix)またはEventLog(Windows)に送信します
--listen-addressPrometheusメトリクスHTTPサーバーがリッスンするアドレス(<host>:<port>

gitlab-runner run-single

1つのGitLabインスタンスから1つのビルドを実行するには、この補助コマンドを使用します。このコマンドでは次のことができます:

  • GitLab URLやRunnerトークンなど、すべてのオプションをCLIパラメータまたは環境変数として取ります。たとえば、すべてのパラメータが明示的に指定されたシングルジョブの場合は次のようになります:

    gitlab-runner run-single -u http://gitlab.example.com -t my-runner-token --executor docker --docker-image ruby:3.3
  • 設定ファイルを読み取って、特定のRunnerの設定を使用します。たとえば、設定ファイルが指定されたシングルジョブの場合は次のようになります:

    gitlab-runner run-single -c ~/.gitlab-runner/config.toml -r runner-name

--helpフラグを使用すると、使用可能なすべての設定オプションを確認できます:

gitlab-runner run-single --help

--max-buildsオプションを使用して、Runnerが終了するまでに実行するビルドの数を制御できます。デフォルトの0は、Runnerにビルド制限がなく、ジョブが永久に実行されることを意味します。

--wait-timeoutオプションを使用して、Runnerが終了するまでにジョブを待機する時間を制御することもできます。デフォルトの0は、Runnerにタイムアウトがなく、ジョブ間で永久に待機することを意味します。

内部コマンド

GitLab Runnerは単一バイナリとして配布され、ビルド中に使用されるいくつかの内部コマンドが含まれています。

gitlab-runner artifacts-downloader

GitLabからアーティファクトアーカイブをダウンロードします。

gitlab-runner artifacts-uploader

アーティファクトアーカイブをGitLabにアップロードします。

gitlab-runner cache-archiver

キャッシュアーカイブを作成し、ローカルに保存するか、外部サーバーにアップロードします。

gitlab-runner cache-extractor

ローカルまたは外部に保存されたファイルからキャッシュアーカイブを復元します。

トラブルシューティング

よくある落とし穴のいくつかについて説明します。

通常、サービス関連コマンドを実行するには管理者権限が必要です:

  • Unix(Linux、macOS、FreeBSD)システムでは、gitlab-runnerの前にsudoを付加します
  • Windowsシステムでは、管理者権限でのコマンドプロンプトを使用します。Administratorコマンドプロンプトを実行します。Windowsの検索ボックスにCommand Promptを書き込むには、右クリックしてRun as administratorを選択します。管理者権限でのコマンドプロンプトを実行することを確認します。

gitlab-runner stopが正常にシャットダウンしない

GitLab Runnerがホストにインストールされており、ローカルexecutorを実行すると、アーティファクトのダウンロードやアップロード、キャッシュの処理などの操作のために追加のプロセスが開始されます。これらのプロセスはgitlab-runnerコマンドとして実行されます。つまり、pkill -QUIT gitlab-runnerまたはkillall QUIT gitlab-runnerを使用してプロセスを強制終了できます。プロセスを強制終了すると、プロセスが担当するオペレーションが失敗します。

これを防ぐには、次の2つの方法があります:

  • kill(強制終了)シグナルとしてSIGQUITを使用して、Runnerをローカルサービス(systemdなど)として登録し、gitlab-runner stopまたはsystemctl stop gitlab-runner.serviceを使用します。この動作を有効にするための設定例を次に示します:

    ; /etc/systemd/system/gitlab-runner.service.d/kill.conf
    [Service]
    KillSignal=SIGQUIT
    TimeoutStopSec=infinity
    • 設定の変更を適用するには、このファイルを作成した後、systemctl daemon-reloadを使用してsystemdを再読み込みします。
  • kill -SIGQUIT <pid>を使用してプロセスを手動で強制終了します。メインのgitlab-runnerプロセスのpidを確認する必要があります。これを確認するには、起動時に表示されるログを調べます:

    $ gitlab-runner run
    Runtime platform                                    arch=arm64 os=linux pid=8 revision=853330f9 version=16.5.0

システムIDステートファイルの保存: アクセスが拒否される

GitLab Runner 15.7および15.8は、config.tomlファイルを含むディレクトリに対する書き込み権限がない場合、起動しない可能性があります。

GitLab Runnerは起動時に、config.tomlを含むディレクトリにある.runner_system_idファイルを検索します。.runner_system_idファイルが見つからない場合、新しいファイルを作成します。GitLab Runnerに書き込み権限がない場合、起動が失敗します。

この問題を解決するには、一時的にファイル書き込み権限を許可してgitlab-runner runを実行します。.runner_system_idファイルが作成されたら、権限を読み取り専用にリセットできます。