【入門編】【裏技】GitLab APIを叩いてリポジトリ情報を自動取得・管理する方法 – バージョン管理・CI/CD活用バイブル

こんにちは!日々の開発やインフラ管理、お疲れ様です。
「あそこのリポジトリ、今のディスク使用量どうなっているっけ?」「全プロジェクトの最新コミット状況をまとめてレポート出してよ」……そんな面倒な頼み事を受けて、ブラウザをポチポチクリックして回った経験はありませんか?

エンジニアたるもの、手作業での情報収集なんてスマートじゃありませんよね。

今回は、GitLabの心臓部である「GitLab API」を叩いて、リポジトリ情報を自動で取得・管理する裏技を伝授します。これさえマスターすれば、毎日の作業が劇的に楽になりますし、「おっ、こいつデキるな」と周りを唸らせることができますよ。

初心者の方でも迷わないよう、準備のステップから「おっ!」と驚くような実用スクリプトまで、優しく丁寧に解説していきますね。

—

1. GitLab APIってそもそも何? なぜ使うの?

GitLab APIは、ブラウザでポチポチ操作しているGitLabの機能を、「プログラムから命令して代行させるための窓口」です。

例えば、以下のようなことが一瞬でできるようになります。

  • 組織内にある数百個のリポジトリ情報を一括で取得する
  • 毎晩自動で全リポジトリのバックアップ(アーカイブ)を取る
  • メンバーの権限を一括チェックしてセキュリティレポートを自動生成する

ブラウザの画面を何時間も眺める必要はもうありません。APIに「これちょうだい!」とお願いすれば、一瞬でデータを返してくれるのです。

—

2. 魔法の鍵を手に入れよう:Personal Access Tokenの発行

APIを叩くには、「私は正当な権限を持つユーザーです」と証明するパスポートが必要です。これがPersonal Access Token(個人アクセストークン)と呼ばれる文字列です。

さっそく発行してみましょう。

1. GitLabの画面右上にある自分のアイコンをクリックし、「Preferences(設定)」を開きます。
2. 左側メニューの「Access Tokens(アクセストークン)」をクリックします。
3. トークンの名前(例:`api-automation-script`)を入力し、有効期限を設定します。
4. Scopes(権限スコープ)で、少なくとも `api` (API全体の読み書き権限)にチェックを入れます。
5. 「Create personal access token」のボタンを押します。

> ⚠️ 超重要(先輩からの教え):
> 画面に表示された長い文字列(これがトークンです)は、この瞬間しか二度と表示されません。 必ずメモ帳などにコピーして安全に保管してください。万が一紛失したら、新しく作り直せばOKです。

—

3. まずは基本!curlコマンドで「Hello World」

準備ができたら、まずは自分の端末(ターミナル)から、APIを直接叩いてみましょう。GitLabのAPIを叩く「HelloWorld」です。

以下のコマンドをターミナルに貼り付けてみてください(`YOUR_TOKEN` と `your-gitlab.com` はご自身の環境に書き換えてくださいね)。

curl –header “PRIVATE-TOKEN: YOUR_TOKEN” “https://gitlab.com/api/v4/user”

【実行結果のイメージ】

{
“id”: 12345,
“username”: “your_name”,
“name”: “Your Full Name”,
“state”: “active”,
“avatar_url”: “https://…”,
…
}

おめでとうございます!あなたのGitLabアカウントのプロフィール情報がJSON形式で返ってきましたね。これがGitLab APIとの最初の握手です。

—

4. 本番:Pythonでプロジェクト情報を自動取得する

「curlコマンドだけだと、ちょっと味気ないな」と思いましたか?
ここからが本番です。Pythonを使って、自分のアクセスできる全プロジェクトの名前とURLを優雅にリストアップしてみましょう。

Pythonには標準ライブラリの `urllib` や `json` がありますが、今回はより直感的に書ける `requests` ライブラリを使います(もし入っていなければ `pip install requests` でインストールしておいてください)。

プロジェクト一覧取得スクリプト

import requests

設定情報
GITLAB_URL = “https://gitlab.com” # セルフホストの場合は社内URLに変更
TOKEN = “YOUR_TOKEN” # 先ほど発行したPersonal Access Token

APIのエンドポイント(プロジェクト一覧を取得)
url = f”{GITLAB_URL}/api/v4/projects”

認証ヘッダーにトークンを仕込む
headers = {
“PRIVATE-TOKEN”: TOKEN
}

取得するパラメータ(自分が見られるものを所有者順に100件まで)
params = {
“per_page”: 100,
“membership”: “true” # 自分所属しているプロジェクトに限定
}

try:
# APIへGETリクエストを送信
response = requests.get(url, headers=headers, params=params)

# ステータスコードが 200 (OK) 以外の場合は例外を発生させる
response.raise_for_status()

# JSONデータをパース(Pythonの辞書・リスト型に変換)
projects = response.json()

print(f”— 取得成功!合計 {len(projects)} 件のプロジェクトが見つかりました —“)
for project in projects:
print(f”📌 Project Name: {project[‘name’]}”)
print(f” URL: {project[‘web_url’]}”)
print(“-” 40)

except requests.exceptions.RequestException as e:
print(f”エラーが発生しました: {e}”)

このスクリプトを実行すると、あなたがアクセスできるプロジェクトの数々がターミナルに美しく出力されます。ワクワクしませんか?

—

5. 現場で使える応用アイデア:全リポジトリの一括バックアップ

さて、基礎ができると、一気に「現場で使える自動化」が見えてきます。
最後に、応用アイデアとして「全プロジェクトのソースコード(アーカイブ)を自動でローカルにバックアップするスクリプト」の概念をご紹介します。

GitLab APIには、各プロジェクトのソースコードを `.tar.gz` などの圧縮ファイルとしてダウンロードするエンドポイントが用意されています。

擬似コード的なイメージ
for project in projects:
project_id = project[‘id’]
project_name = project[‘path’]

# バックアップ用エンドポイントを叩く
archive_url = f”{GITLAB_URL}/api/v4/projects/{project_id}/repository/archive”

# ストリーミングでファイルをごそっとダウンロードしてローカルに保存
# 実際にはここにファイル書き込みの処理を追加します
print(f”Backing up: {project_name} … Done!”)

これを、社内サーバーのCron(定期実行タスク)や、GitLab CI/CD自体のパイプラインに組み込んでおけば、「気づいたらバックアップが毎日自動で完了している最強の環境」の出来上がりです。面倒な手動バックアップ作業から完全に解放されます。

—

まとめ:自動化の第一歩を踏み出そう

今回は、GitLab APIの基本から、Tokenの発行、Pythonを使った実用的なデータ取得までを駆け足でご紹介しました。

  • Personal Access TokenでAPIの通行証を手に入れる
  • `curl`でまずは軽くAPIのレスポンスを体感する
  • Pythonなどの言語を組み合わせて、定型作業を自動化・効率化する

これをマスターすれば、日々の面倒なリポジトリ管理作業が一瞬で終わり、よりクリエイティブな開発に集中できるようになります。

「これを応用して、次はこんなレポートを出したいな」と思った瞬間から、あなたのエンジニアとしてのスキルは一段階上のステージに上がっています。
ぜひ、今日の業務からAPIの魔法を取り入れてみてくださいね!

タイトルとURLをコピーしました