fbpx

GitLab Runnerの情報を確認する方法 #gitlab #gitlabjp #developers #Csharp

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

GitLab Runner

GitLab CI/CDのジョブを実行するためのGitLab Runnerは大きくShared/Specificの2種類のRunnerに分類されます。
Runnerの特徴はこちらのドキュメントをご覧ください。
それぞれのRunnerにメリットがあるので、どれを利用するのが良いかはシチュエーションによっての選択になります。

メンテナンスおよびそれにかかるコストを軽減したい場合は、Shared Runnerを利用するのが望ましいでしょう。
逆に、他のプロジェクトのCI/CDのジョブがキューに溜まってしまう可能性があり、いついかなるときでもジョブを待ちたくないケースがある場合はSpecific Runnerを利用するのが望ましいでしょう。
また、セキュリティ要件上、他プロジェクトと共存しないCI/CD実行環境が必要といったケースの場合もSpecific Runnerを利用することになります。

Specific Runnerについては、1プロジェクト:1ランナー の可能性がありますので、利用している組織の規模によっては乱立しやすいものになります。

GitLab管理者のみSpecific runnerを作ることが出来る運用にするというのも1つの方法ですが、プロジェクトのオーナーが自由に行えるほうが開発スピードの面から望ましいと考えられます。
ただ、その場合「このSpecific Runnerって誰(どのプロジェクト)が使っているんだろう?野良ランナー?」みたいなことが発生する可能性があります。
また、例えばVMでSpecific Runnerを用意していたとして、VMを停止なり再起動したい場合に、このRunnerは誰が使っているんだろう?みたいなケースもあるのかなと思います。

そこで、本記事ではプロジェクト全体で利用しているGitLab Runnerの情報を確認する方法について紹介したいと思います。
後半は2つほど自作でAPIを用意してみたのでそちらに関しても簡単に説明します。
なお、個別プロジェクトのRunner確認については今回一部のみ触れる形とし、基本的に割愛します。

GitLab Runnerに関する情報の確認

GUI(Admin Area)からの確認

全体で利用しているRunnerの一覧

rootユーザでGitLab GUIにログインし、Admin Area -> Overview -> Runners からRunnerの一覧を確認することが可能です。

Specific runnerの場合はRunner Tokenを押すと、割り当てられているプロジェクト一覧などを見ることができます。

APIでの確認

Runners APIを使用することで参照することが出来ます。
statusやtypeでの絞り込みも可能ですが詳細は上記リンク先をご覧ください。
※ GitLab APIのcall方法は過去記事をご参照ください。

全体で利用しているRunnerの一覧

/api/v4/runners?private_token=XXXXX

特定のプロジェクトで利用しているRunnerの一覧(参考)

個別プロジェクトのRunner確認は割愛しますと書きましたが、APIに関してせっかくの機会なのでご紹介。
個別のプロジェクトのRunner情報はAPIの場合は以下の指定で取得できます。

/api/v4/projects/[project-path-with-namespace]/runners?private_token=XXXXX

[project-path-with-namespace]にはnamespaceつきでプロジェクトのパスを指定します。

例えば、https://gitlab.com/creationline/apindy プロジェクトのRunnerを取得する場合は、以下となります。

https://gitlab.com/api/v4/projects/creationline%2Fapindy/runners?private_token=XXXXX

(補足)[project-path-with-namespace]はURLエンコードされた文字列を渡す必要があります。今回の場合は"/" -> "%2F"に置き換える必要があります。

shared runnerが有効になっているプロジェクト一覧

「セキュリティ的に全プロジェクトでShared Runnerは使用禁止!」みたいな運用時に見たい情報になります。

  • Projects APIで全プロジェクトの情報を取得(api/v4/projects)
  • responseのshared_runners_enabledの値を確認

せっかくなのでAPIとして作ってみました。

1回の操作でShared Runnerが有効になっているプロジェクト一覧を取得します。
設定変更の連絡を想定し、プロジェクトのオーナーも取得しています。
あとは過去のAPI同様にslackに情報を通知することも可能となっています。

Specific Runnerが利用しているプロジェクトの一覧

先述したGUI(Admin Area)では見れますが、APIだと1回の操作で取得できそうになかったのでこちらもAPIとして作ってみました。

specific runnerに対し、アサインされているプロジェクトの一覧を取得できます。
statusによる絞り込み&slack通知も可能なので、例えばofflineのSpecific runnerにアサインされているプロジェクト一覧を取得してプロジェクト管理者に教えるみたいなことも可能です。

最後に

過去のGitLab APIを利用した記事の機能含めて、https://gitlab.com/creationline/apindy/-/tree/develop に資産を配置しています。
どういう機能があるのか?はcodeをcloneして起動してもらって/swagger/index.htmlを参照してもらえればと思います。
とりあえずラフに触りたいって人向けには、https://gitlab.com/creationline/apindy/container_registry にdocker imageもおいてあるので良ければどうぞー。

また、GitLabを利用していて困っていることがありましたら、執筆者欄記載の連絡先へ気軽に教えてください。雑談、指摘などもお気軽にどうぞ!

バックナンバー

新規CTA