Runner
Runnerは、パイプライン内でGitLab CI/CDジョブを実行するためにGitLab Runnerアプリケーションを実行するエージェントです。.gitlab-ci.ymlファイルで定義されたビルド、テスト、デプロイ、その他のCI/CDタスクを実行する役割を担います。
Runnerの実行フロー
Runnerの基本的なワークフローを以下に示します:
- Runnerは、まずGitLabに登録する必要があります。これにより、RunnerとGitLab間の永続的な接続が確立されます。
- パイプラインがトリガーされると、GitLabは登録済みのRunnerに対してジョブを利用可能にします。
- 条件に一致する各Runnerがジョブを1つずつ取得して実行します。
- 結果はリアルタイムでGitLabに報告されます。
詳細については、Runnerの実行フローを参照してください。
Runnerのジョブスケジューリングと実行
CI/CDジョブを実行する必要がある場合、GitLabは.gitlab-ci.ymlファイルで定義されたタスクに基づいてジョブを作成します。ジョブはキューに配置されます。GitLabは、次の条件に一致する利用可能なRunnerを確認します:
- Runnerタグ
- Runnerタイプ(共有またはグループなど)
- Runnerのステータスと処理能力
- 必要な機能
割り当てられたRunnerがジョブの詳細を受け取ります。Runnerは環境を準備し、.gitlab-ci.ymlファイルで指定されたジョブのコマンドを実行します。
Runnerのカテゴリ
CI/CDジョブを実行するRunnerを決定する際には、以下から選択できます:
- GitLab.comまたはGitLab Dedicatedユーザー向けのGitLabでホストされるRunner。
- すべてのGitLabインストール向けのSelf-Managed Runner。
Runnerは、グループRunner、プロジェクトRunner、インスタンスRunnerのいずれかとして利用できます。GitLabでホストされるRunnerはインスタンスRunnerです。
GitLabでホストされるRunner
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Dedicated
GitLabでホストされるRunnerの特長:
- GitLabが完全に管理している。
- セットアップなしですぐに利用できる。
- ジョブごとに新しいVMで実行される。
- Linux、Windows、macOSのオプションを含む。
- 需要に応じて自動的にスケールする。
GitLabでホストされるRunnerを選択するのは、以下の場合です:
- メンテナンス不要のCI/CDが必要な場合。
- インフラストラクチャの管理なしで迅速にセットアップする必要がある場合。
- ジョブごとに独立した実行環境が必要な場合。
- 標準的なビルド環境で作業している場合。
- GitLab.comまたはGitLab Dedicatedを使用している場合。
Self-Managed Runner
- プラン: Free、Premium、Ultimate
- 提供形態: GitLab.com、GitLab Self-Managed、GitLab Dedicated
Self-Managed Runnerの特長:
- ユーザー自身がインストールおよび管理する。
- 独自のインフラストラクチャ上で実行する。
- ニーズに合わせてカスタマイズできる。
- さまざまなexecutor(Shell、Docker、Kubernetesなど)をサポートする。
- 共有することも、特定のプロジェクトやグループ専用にもできる。
Self-Managed Runnerを選択するのは、以下の場合です:
- カスタム設定が必要な場合。
- プライベートネットワークでジョブを実行する場合。
- 特定のセキュリティ制御が必要な場合。
- プロジェクトまたはグループRunnerが必要な場合。
- Runnerを再利用して処理速度を最適化する必要がある場合。
- 独自のインフラストラクチャを管理する場合。