ランナーの管理
GitLab Runnerには以下の種類のRunnerがあり、アクセスさせたい人に応じて利用できます:
- 共有ランナーは、GitLabインスタンス内のすべてのグループとプロジェクトが利用できます。
- グループ Runnerはグループ内の全てのプロジェクトとサブグループで利用できます。
- プロジェクトランナーは、特定のプロジェクトに関連付けられます。通常、プロジェクトランナーは一度に1つのプロジェクトで使用されます。
共有ランナー
共有ランナーは、GitLabインスタンス内のすべてのプロジェクトで利用できます。
同じような要件を持つ複数のジョブがある場合は、共有ランナーを使いましょう。多くのプロジェクトのために複数の Runner をアイドリングさせるのではなく、複数のプロジェクトを扱う少数の Runner を持つことができます。
GitLabのセルフマネージドインスタンスを使用している場合:
- 管理者がGitLab Runner をインストールし、共有 Runner を登録することができます。
- また、管理者はグループごとに共有Runnerの最大計算分数を設定することができます。
GitLab.comを使用している場合:
- GitLabが管理する共有ランナーのリストから選択できます。
- 共有ランナーはアカウントに含まれるコンピュート分を消費します。
ランナー認証トークンを使用して共有ランナーを作成します。
前提条件
- 管理者である必要があります。
ランナーを作成すると、登録に使用するランナー認証トークンが割り当てられます。Runner は、ジョブキューからジョブをピックアップするときに GitLab と認証するためにトークンを使用します。
共有ランナーを作成するには、以下の手順に従います:
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 左サイドバーで、CI/CD > Runnerを選択します。
- New instance runnerを選択します。
- プラットフォームを選択します。
- オプション。ランナーの設定を入力します。
- Submit(送信)を選択します。
- 画面の指示に従って、コマンドラインからランナーを登録します。
APIを使用してランナーを作成し、ランナー認証トークンを生成することもできます。
登録トークンを持つ共有ランナーの作成(非推奨)
前提条件
- 管理者である必要があります。
共有ランナーを作成するには、以下の手順に従います:
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- CI/CD > Runnerを選択します。
- Register an instance runnerを選択します。
- 登録トークンをコピーします。
- ランナーを登録します。
共有ランナーの一時停止または再開
前提条件
- 管理者である必要があります。
ランナーを一時停止して、GitLabインスタンス内のグループやプロジェクトからのジョブを受け付けないようにすることができます。
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- CI/CD > Runnerを選択します。
- 検索ボックスにランナーの説明を入力するか、ランナーリストをフィルタリングします。
- ランナーリストで、ランナーの右側にある
- ランナーを一時停止するには、一時停止({pause})を選択します。
- ランナーを再開するには、再開({play})を選択します。
共有ランナーの削除
前提条件
- 管理者である必要があります。
共有ランナーを削除すると、GitLabインスタンスから永久に削除され、グループやプロジェクトから使用できなくなります。ランナーがジョブを受け付けるのを一時的に止めたい場合は、代わりにランナーを一時停止することができます。
単一または複数の共有ランナーを削除します:
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- CI/CD > Runnerを選択します。
- 検索ボックスにランナーの説明を入力するか、ランナーのリストをフィルタリングします。
- 共有ランナーを削除します:
- 1つのランナーを削除するには、ランナーの横でランナーの削除({remove})を選択します。
- 複 数 の 共 有 ラン ナ ー を 削 除 す る に は 、そ れ ぞ れ のランナーのチェックボックスを選択し、選択したランナーを削 除 を 選 択しま す。
- すべてのランナーを削除するには、ランナーリストの上部にあるチェックボックスを選択し、選択したランナーを削除を選択します。
- Permanently delete runner(ランナーの永久削除)を選択します。
プロジェクトの共有ランナーの有効化
GitLab.comでは、すべてのプロジェクトで共有ランナーがデフォルトで有効になっています。
GitLabのセルフマネージドインスタンスでは、管理者はすべての新規プロジェクトで共有ランナーを有効にすることができます。
既存のプロジェクトでは、管理者がインストールして 登録する必要があります。
プロジェクトの共有Runnerを有効にするには:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- Settings > CI/CDを選択します。
- Runnerを展開します。
- Enable shared runner for this projecttoggleをオンにします。
グループの共有Runnerを有効にします。
グループの共有ランナーを有効にします:
- 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
- Settings > CI/CDを選択します。
- Runnerを展開します。
- このグループの共有Runnerを有効にする]トグルをオンにします。
プロジェクトの共有Runnerを無効にします。
個々のプロジェクトまたはグループの共有ランナーを無効にすることができます。プロジェクトまたはグループのオーナーロールを持っている必要があります。
プロジェクトの共有ランナーを無効にするには、以下の手順に従います:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- Settings > CI/CDを選択します。
- Runnerを展開します。
- Shared runner(共有ランナー)エリアで、Enable shared runners for this project(このプロジェ クトの共有ランナーを有効にする)トグルをオフにします。
プロジェクトの共有ランナーは自動的に無効になります:
- 親グループの共有Runner設定が無効になっている場合。
- プロジェクト・レベルでこの設定のオーバーライドが許可されていない場合。
グループの共有ランナーの無効化
グループの共有ランナーを無効にします:
- 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
- Settings > CI/CDを選択します。
- Runnerを展開します。
- このグループの共有Runnerを有効にする]トグルをオフにします。
- オプション。個々のプロジェクトまたはサブグループで共有ランナーを有効にするには、[Allow projects and subgroups to override the group setting] を選択します。
共有ランナーがジョブを選択する方法
共有ランナーは公平な利用キューを使用してジョブを処理します。このキューはプロジェクトが何百ものジョブを作成し、利用可能なすべての共有Runnerリソースを使用することを防ぎます。
公平な使用キューアルゴリズムは、共有ランナー上ですでに実行されているジョブの数が最も少ないプロジェクトに基づいてジョブを割り当てます。
例えば、これらのジョブがキューにある場合:
- プロジェクト1のジョブ1
- プロジェクト1のジョブ2
- プロジェクト1のジョブ3
- プロジェクト2のジョブ4
- プロジェクト2のジョブ5
- プロジェクト3のジョブ6
複数のCI/CDジョブが同時に実行される場合、公平な利用アルゴリズムはこの順序でジョブを割り当てます:
- ジョブ1が最初になります。これは、実行中のジョブがないプロジェクト(つまり、すべてのプロジェクト)から最も低いジョブ番号を持っているからです。
- 次がジョブ 4 で、これは実行中のジョブがないプロジェクト (プロジェクト 1 には実行中のジョブがあります) の中で最も低いジョブ番号になるからです。
- プロジェクト 1 と 2 はジョブを実行中です。
- ジョブ 2 はその次で、実行中のジョブ数が最も少ないプロジェクト (それぞれ 1) の中で、最も少ないジョブ数だからです。
- ジョブ 5 はその次です。なぜなら、プロジェクト 1 は現在 2 つのジョブを実行中で、ジョブ 5 はプロジェクト 2 と 3 の間で最もジョブ数が少ないからです。
- 最後にジョブ3です…残された唯一のジョブですから。
一度に1つのジョブしか実行されない場合、公平利用アルゴリズムはこの順番でジョブを割り当てます:
- ジョブ 1 が最初に選択されます。これは、実行中のジョブがないプロジェクト (つまり、すべてのプロジェクト) の中で、ジョブ番号が最も小さいからです。
- ジョブ 1 を終了します。
- ジョブ1が終了すると、すべてのプロジェクトで実行中のジョブが0になります。
- プロジェクト 1 がジョブを実行しているため、プロジェクト 2 と 3 のうち、ジョブを実行していないプロジェクトで最も低いジョブ番号は 4 です。
- ジョブ4を終了します。
- ジョブ4が終わったので、プロジェクト2にはジョブはありません。
- 次にジョブ 6 です。プロジェクト 3 のジョブだけが残っているからです。
- 最後にジョブ3を選びます。
グループランナー
グループランナーは、グループ内のすべてのプロジェクトがランナーのセットにアクセスできるようにする場合に使用します。
グループRunnerは、先入れ先出しキューを使用してジョブを処理します。
ランナー認証トークンを使用してグループランナーを作成します。
前提条件:
- グループのオーナーロールを持っている必要があります。
自己管理するGitLabインスタンスまたはGitLab.comのグループRunnerを作成することができます。ランナーを作成すると、登録に使用するランナー認証トークンが割り当てられます。Runnerは、ジョブキューからジョブをピックアップするときにGitLabと認証するためにトークンを使用します。
グループRunnerを作成するには:
- 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
- Build > Runnerを選択します。
- New group runner(新規グループランナー)を選択します。
- プラットフォームを選択します。
- オプション。ランナーの設定を入力します。
- Submit(送信)を選択します。
- 画面の指示に従って、コマンドラインからランナーを登録します。
APIを使用してランナーを作成し、認証トークンを生成することもできます。
登録トークンによるグループランナーの作成(非推奨)
GitLab 14.10 で導入され、パスは設定 > CI/CD > Runner から変更されました。
グループのオーナーロールを持っている必要があります。
グループRunnerを作成するには:
- GitLab Runnerをインストールします。
- 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
- Build > Runnerを選択します。
- 右上で、グループランナーの登録を選択します。
- Show runner installation and registration instructions(ランナーのインストー ルと登録手順の表示)を選択します。こ れ ら の 指 示 に は 、ト ー ク ン 、U R L 、お よ び ラ ン ナ ー を 登 録 す る コ マ ン ド が 含 ま れ ま す 。
ま た は 、登 録 ト ー ク ン を コ ピ ー し て 、ラン ナ ー の 登 録 方 法 に つ い て 説 明 書 に 従 う こ と も で き ま す 。
グループランナーの表示と管理
グループ、そのサブグループ、プロジェクトのすべてのランナーを表示・管理することができます。これは、自分で管理するGitLabインスタンスでも、GitLab.comでも可能です。グループのオーナーロールが必要です。
- 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
- Build > Runnerを選択します。
このページでは、グループ、そのサブグループ、プロジェクトからランナーを編集、一時停止、削除することができます。
グループランナーをフィルタリングして、継承されたランナーのみを表示することができます。
全ての Runner をリストに表示するか、インスタンスや他のグループから継承された Runner のみを表示するかを選択できます。
デフォルトでは、継承されたもののみが表示されます。
共有ランナーや他のグループのランナーを含め、インスタンスで利用可能なすべてのランナーを表示します:
- 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
- Build > Runnerを選択します。
- リストの上にある、Show only inheritedtoggleをオフにします。
グループランナーの一時停止または再開
前提条件
- グループの管理者またはオーナーロールを持っている必要があります。
ランナーを一時停止して、GitLabインスタンス内のサブグループやプロジェクトからのジョブを受け付けないようにすることができます。複数のプロジェクトで使用されているグループランナーを一時停止すると、ランナーはすべてのプロジェクトで一時停止します。
- 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
- Build > Runnerを選択します。
- 検索ボックスにランナーの説明を入力するか、ランナーリストをフィルタリングします。
- ランナーリストで、ランナーの右側にある
- ランナーを一時停止するには、一時停止({pause})を選択します。
- ランナーを再開するには、再開({play})を選択します。
グループランナーの削除
GitLab 15.6で導入された複数ランナーの削除。
前提条件
- グループの管理者またはオーナーロールを持っている必要があります。
グループRunnerを削除すると、GitLabインスタンスから永久に削除され、サブグループやプロジェクトから使用できなくなります。ランナーがジョブを受け付けるのを一時的に止めたい場合は、代わりにランナーを一時停止することができます。
単一または複数のグループ Runner を削除するには:
- 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
- Build > Runnerを選択します。
- 検索ボックスにランナーの説明を入力するか、ランナーのリストをフィルタリングします。
- グループランナーを削除します:
- 1つのランナーを削除するには、ランナーの横でランナーの削除({remove})を選択します。
- 複 数 の 共 有 ラン ナ ー を 削 除 す る に は 、そ れ ぞ れ のランナーのチェックボックスを選択し、選択したランナーを削 除 を 選 択しま す。
- すべてのランナーを削除するには、ランナーリストの上部にあるチェックボックスを選択し、選択したランナーを削除を選択します。
- Permanently delete runner(ランナーの永久削除)を選択します。
古いグループランナーのクリーンアップ
GitLab 15.1で導入されました。
3ヶ月以上活動していないグループランナーをクリーンアップすることができます。
グループランナーとは、グループレベルで作成されたランナーのことです。
- 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
- Settings > CI/CDを選択します。
- Runnerを展開します。
- 古いランナーのクリーンアップを有効にする]トグルをオンにします。
古いランナーのクリーンアップ・ログの表示
Sidekiqログでクリーンアップ結果を確認できます。Kibanaでは、次のクエリを使用できます:
{
"query": {
"match_phrase": {
"json.class.keyword": "Ci::Runners::StaleGroupRunnersPruneCronWorker"
}
}
}
古いランナーが削除されたエントリをフィルタします:
{
"query": {
"range": {
"json.extra.ci_runners_stale_group_runners_prune_cron_worker.total_pruned": {
"gte": 1,
"lt": null
}
}
}
}
プロジェクトランナー
特定のプロジェクトにRunnerを使いたい場合は、_プロジェクトRunnerを使って_ください。例えば
- 認証情報を必要とするデプロイジョブなど、特定の要件を持つジョブ。
- CIアクティビティが多いプロジェクトで、他のランナーから分離することで利益を得ることができます。
複数のプロジェクトで使用するプロジェクトランナーを設定することができます。プロジェクトランナーは、プロジェクトごとに明示的に有効にする必要があります。
プロジェクトランナーは、先入れ先出し(FIFO)キューを使用してジョブを処理します。
ランナー認証トークンを使ってプロジェクトランナーを作成します。
前提条件:
- プロジェクトのメンテナーのロールを持っている必要があります。
プロジェクトランナーは、自分で管理するGitLabインスタンスやGitLab.comのために作成することができます。ランナーを作成すると、ランナーに登録するためのランナー認証トークンが割り当てられます。Runner は、ジョブキューからジョブをピックアップするときに GitLab と認証するためにトークンを使用します。
プロジェクト Runner を作成するには:
- 左のサイドバーで「検索」または「移動」を選択してあなたのプロジェクトを検索します。
- Settings > CI/CDを選択します。
- Runnerセクションを展開します。
- New project runner(新規プロジェクトランナー)を選択します。
- プラットフォームを選択します。
- オプション。ランナーの設定を入力します。
- Submit(送信)を選択します。
- 画面の指示に従って、コマンドラインからランナーを登録します。
APIを使用してランナーを作成し、ランナー認証トークンを生成することもできます。
登録トークンによるプロジェクトランナーの作成(非推奨)
前提条件
- 少なくともプロジェクトのメンテナーのロールを持っている必要があります。
プロジェクト Runner を作成するには:
- GitLab Runnerをインストールします。
- 左のサイドバーで、Search を選択するか、go to を選択して Runner を使いたいプロジェクトを探します。
- Settings > CI/CDを選択します。
- Runnerを展開します。
- Project runnersセクションで、URLとトークンに注意してください。
- ランナーを登録します。
プロジェクトでRunnerが有効になりました。
プロジェクトランナーの一時停止または再開
前提条件
- 管理者であるか、プロジェクトのメンテナーのロールを持っている必要があります。
プロジェクト Runner を一時停止して、GitLab インスタンスで割り当てられているプロジェクトからのジョブを受け付けないようにすることができます。
- 左のサイドバーでSearch を選択するか、Go to を選択して Runner を有効にしたいプロジェクトを探します。
- Settings > CI/CDを選択します。
- Runnerを展開します。
- Assigned project runnersセクションで、Runnerを見つけます。
- ランナーの右側にある
- ランナーを一時停止するには、一時停止({pause})を選択し、次に一時 停止を選択します。
- ランナーを再開するには、再開({play})を選択します。
プロジェクトランナーの削除
前提条件:
- 管理者であるか、プロジェクトのメンテナーのロールを持っている必要があります。
- 複数のプロジェクトに割り当てられているプロジェクトランナーは削除できません。ランナーを削除する前に、ランナーが有効になっているすべてのプロジェクトでランナーを無効にする必要があります。
プロジェクトランナーを削除すると、GitLabインスタンスから永久に削除され、プロジェクトで使用できなくなります。ランナーがジョブを受け付けるのを一時的に止めたい場合は、代わりにランナーを一時停止することができます。
- 左のサイドバーでSearch を選択するか、Go to を選択して Runner を有効にしたいプロジェクトを探します。
- Settings > CI/CDを選択します。
- Runnerを展開します。
- Assigned project runnersセクションで、Runnerを見つけます。
- ランナーの右側で、Remove runner(ランナーの削除)を選択します。
- ランナーを削除するには、削除を選択します。
別のプロジェクトのプロジェクトランナーを有効にします。
プロジェクト・ランナーが作成されたら、他のプロジェクトでも有効にすることができます。
前提条件:少なくとも以下のメンテナーのロールを持っている必要があります:
- ランナーがすでに有効になっているプロジェクト。
- ランナーを有効にするプロジェクト。
- プロジェクトランナーがロックされていないこと。
プロジェクトのプロジェクトランナーを有効にするには、以下の手順に従います:
- 左のサイドバーでSearch を選択するか、Go to を選択して Runner を有効にしたいプロジェクトを探します。
- Settings > CI/CDを選択します。
- Runnerを展開します。
- Project runners(プロジェクト・ランナー)エリアで、必要なランナーの横にあるEnable for this project(このプロジェクトで有効にする)を選択します。
プロジェクトランナーは、有効になっているどのプロジェクトからでも編集できます。タグや説明のロック解除や編集を含む変更は、ランナーを使用するすべてのプロジェクトに影響します。
管理者は、複数のプロジェクトに対して Runner を有効にすることができます。
プロジェクトランナーが他のプロジェクトで有効にならないようにします。
プロジェクトランナーを「ロック」して、他のプロジェクトで有効にできないように設定することができます。この設定は、最初にランナーを登録するときに有効にできますが、後で変更することもできます。
プロジェクトランナーをロックまたはロック解除するには、以下の手順に従います:
- 左のサイドバーでSearch を選択するか、Go to を選択して Runner を有効にしたいプロジェクトを探します。
- Settings > CI/CDを選択します。
- Runnerを展開します。
- ロックまたはロック解除したいプロジェクト・ランナーを見つけます。有効になっていることを確認します。共有ランナーやグループランナーをロックすることはできません。
- 編集({pencil})を選択します。
- 現在のプロジェクトにロックするチェックボックスを選択します。
- 変更を保存を選択します。
ランナーのステータス
ランナーは以下のステータスのいずれかになります。
ステータス | 説明 |
---|---|
online | Runner は過去 2 時間以内に GitLab に連絡し、ジョブを実行できる状態になっています。 |
offline | Runner は 2 時間以上 GitLab に連絡しておらず、ジョブを実行できません。ランナーをオンラインにできるか確認してください。 |
stale | Runner が 3 ヶ月以上 GitLab に連絡していません。ランナーが 3 ヶ月以上前に作成され、インスタンスに一度もコンタクトしていない場合も古いと見なされます。 |
never_contacted | Runner は GitLab に一度もコンタクトしていません。Runner を GitLab にコンタクトさせるには、gitlab-runner run . |
ランナーのパフォーマンスの統計を見る
GitLab 15.8で導入されました。
管理者として、ランナーの統計情報を見てランナーフリートのパフォーマンスを知ることができます。
- ジョブのキュー時間の中央値は、インスタンスランナーによって実行された直近の100ジョブのキュー時間をサンプリングして計算されます。最新の 5000 ランナーからのジョブのみが考慮されます。
- 中央値は、50 パーセンタイルに入る値です。つまり、ジョブの半分は中央値よりも長くキューに入れられ、ジョブの半分は中央値よりも短くキューに入れられます。
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 左サイドバーで、CI/CD > Runnerを選択します。
- View metricsを選択します。
アップグレードが必要なランナーを決定します。
GitLab 15.3 で導入されました。
ランナーが使用するGitLab Runnerのバージョンは常に最新にしておく必要があります。
どの Runner をアップグレードする必要があるかは
- ランナーのリストを表示します:
- グループの場合
- 左のサイドバーで、Search(検索)を選択するか、Go to(移動)を選択してグループを探します。
- Build > Runnerを選択します。
- インスタンスに
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- CI/CD > Runnerを選択します。
- グループの場合
- Runnerのリストの上に、ステータスを表示します:
-
Outdated - 推奨:Outdated - recommended: Runner には最新の
PATCH
バージョンがないため、セキュリティや深刻度の高いバグに対して脆弱性がある可能性があります。または、RunnerはあなたのGitLabインスタンスより1つ以上MAJOR
バージョンが遅れているため、いくつかの機能が利用できなかったり、正しく動作しない可能性があります。 - 古い - 利用可能:新しいバージョンが利用可能ですが、アップグレードは重要ではありません。
-
Outdated - 推奨:Outdated - recommended: Runner には最新の
- ステータスでリストを絞り込み、アップグレードが必要なランナーを表示してください。
ランナーのIPアドレスの決定
RunnerのIPアドレスを知っておくと、そのRunnerのイシューをトラブルシュートするのに便利です。GitLabはジョブのポーリング時にGitLabへのHTTPリクエストのソースを見ることでIPアドレスを保存し、表示します。IPアドレスは常に最新の状態に保たれているため、RunnerのIPが変更されるとGitLabで自動的に更新されます。
共有RunnerとプロジェクトRunnerのIPアドレスは異なる場所にあります。
共有ランナーのIPアドレスの決定
前提条件
- インスタンスへの管理者アクセス権が必要です。
共有RunnerのIPアドレスを決定するには:
- 左のサイドバーで、Search を選択するか、次のページに進んでください。
- Admin Areaを選択します。
- 左サイドバーで、CI/CD > Runnerを選択します。
- テーブルでRunnerを見つけ、IPアドレス列を表示します。
プロジェクトランナーのIPアドレスの決定
プロジェクトプロジェクトのRunnerのIPアドレスを調べるには、そのプロジェクトのオーナーロールを持っている必要があります。
- プロジェクトの[設定]>[CI/CD]に移動し、[ランナー]セクションを展開します。
- 詳細ページにIPアドレスの行があるはずです。