1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GitLab MRコメントをトリガーに、GitHub Copilot CLIでAIレビューを自動化するWebhookリスナーを作った話

Last updated at Posted at 2025-11-30

概要

GitLab の Merge Request コメントに特定キーワードが付いたら、ローカルの GitHub Copilot CLI を叩いて AI レビューを走らせ、その結果を MR に投稿する仕組みを Express で作りました。外部 HTTP 転送もできるので、CIやツール連携に使えます。

なぜ作ったか(背景)

  • 社内のリポジトリは GitLab だが、Copilot が直接連携できず活用しきれていなかった
  • GitHub Copilot を導入していないメンバーもおり、AI レビューの利用有無で品質がばらつく
  • AI への指示や使い方の差でレビュー質が変わる課題を、共通フローで平準化したかった
  • MR コメントにキーワードを入れるだけで、誰でも同じ Copilot CLI レビューを再現できる仕組みを用意した

何ができるか

  • GitLab の /gitlab-hook を受信し、MR コメント内のトリガー(デフォルト @copilot-test)を検知
  • 条件一致時に:
    • GitHub Copilot CLI へローカルの git diff を渡してレビュー/机上デバッグを実行
    • 結果を MR コメントに投稿(大きすぎる diff は自動トリム)
  • 併せて Webhook payload を任意の TARGET_URL に転送(タイムアウト付き)
  • 条件不一致は 200 で無視し、GitLab 側のリトライを防止

セットアップ

npm install
cp .env.example .env

.env の主な設定:

  • 必須: TARGET_URL(転送先)、GITLAB_SECRET_TOKEN
  • 任意: TRIGGER_TAG(既定 @copilot-test)、TARGET_TIMEOUT_MS
  • Copilot 連携:
    • COPILOT_ENABLED=true
    • REPO_BASE_PATH(ローカルリポジトリパス)
    • COPILOT_COMMAND(例: gh copilot feedback --diff 相当の CLI 呼び出し)
    • COPILOT_TIMEOUT_MS(CLI 実行タイムアウト)

起動とヘルスチェック

npm start # または npm run dev
curl http://localhost:3000/health

GitLab Webhook 設定例

  • URL: http://:3000/gitlab-hook
  • Token: .env の GITLAB_SECRET_TOKEN
  • 対象イベント: Merge request events / Comments
  • テスト: MR コメントに @copilot-test を付けて投稿 → Copilot CLI が走り、結果が MR コメントに返る

手動検証用 curl

curl -X POST http://localhost:3000/gitlab-hook
-H "X-Gitlab-Token:$GITLAB_SECRET_TOKEN"
-H "Content-Type: application/json"
-d '{"object_kind":"note","object_attributes":{"note":"@copilot-test review please"},"merge_request":{}}'

まとめ

  • GitLab MR コメントをフックに、GitHub Copilot CLI で AI レビューを自動化
  • 小さな Express アプリなので既存環境に組み込みやすい
  • そのまま外部サービス連携(CI 実行や通知)にも応用可能

試してみた感想や改善案があればコメントでぜひ!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?