English | 中文 | 日本語 | हिन्दी | 한국어 | ภาษาไทย | العربية
GitHub Copilot CLI と GitLab CI/CD を活用した完全自動コーディングエージェント。Issue 割り当て、マージリクエストコメント、マージリクエストレビュアー割り当てを通じて、自律的なコード実装とインテリジェントなコードレビューを実現します。
Youtube デモ動画
セットアップ:
使用方法:
- Copilot Coding Agent for GitLab - How to use 2:30 – Create an issue in the app repo and assign it to Copilot
- Copilot Coding Agent for GitLab - How to use 11:24 – Let Copilot make some updates in the merge request via comments
サンプルリポジトリ
- パブリック GitLab デモリポジトリ app-repo-01
- Issue: webhook receiverアプリケーション
- MR: Cwebhook receiverアプリケーション (#17)
- コメントで MR を更新: @copilot-agent readmeを日本語に変更
- コードレビュー: MRにCopilotを指定するレビュー担当者
graph TB
subgraph "App Repository (Target Repo)"
A[GitLab Issue/MR] -->|Issue assign to Copilot| C[Webhook Trigger]
A[GitLab Issue/MR] -->|MR comment @copilot-agent| C[Webhook Trigger]
A[GitLab Issue/MR] -->|MR assign Copilot as Reviewer| C[Webhook Trigger]
end
subgraph "Webhook Service"
C -->|HTTP POST| D[Flask Service]
D -->|Validate & Extract| E[Pipeline Variables]
E -->|Trigger| F[GitLab API]
end
subgraph "Copilot Coding Agent Repo"
F -->|Start Pipeline| G[CI/CD Pipeline]
G -->|Issue: ack → plan → create_mr| H[Issue Workflow]
G -->|MR Note: mr_update only| I[MR Note Workflow]
G -->|MR Reviewer: mr_review| L[MR Review Workflow]
H -->|implement → finalize| J[Copilot CLI]
I -->|implement changes| J
L -->|perform code review| J
J -->|Generate Code| K[Git Commit & Push]
end
K -->|Update| A
J -->|Post Comments| A
L -->|Post Review Comments| A
style D fill:#e1f5ff
style G fill:#fff4e1
style J fill:#e8f5e9
- アプリケーションリポジトリ: 開発が行われるアプリケーションコードリポジトリ
- Webhook サービス: GitLab イベントをキャプチャする Flask ベースのリレーサービス
- Copilot コーディングエージェントリポジトリ: コーディング自動化を実行する CI/CD オーケストレータ
Issue 割り当てワークフロー(完全自動化):
Issue を Copilot に割り当て → Webhook → パイプライントリガー →
Issue 確認 → TODO プラン生成 → MR 作成 →
コード実装 → 変更をプッシュ → MR & Issue を更新
MR Note ワークフロー(迅速な更新):
MR で @copilot-agent にコメント → Webhook → パイプライントリガー →
確認 → 変更を実装 → ソースブランチにプッシュ →
サマリーコメント投稿
MR Reviewer ワークフロー(インテリジェントなコードレビュー):
Copilot を MR レビュアーに割り当て → Webhook → パイプライントリガー →
確認 → コード変更を分析 → 包括的なレビューを実行 →
詳細なレビューコメント投稿
- API アクセス権限を持つ GitLab アカウント
- GitLab Runner(Docker/Kubernetes executor)(CI/CD 実行用)
- GitHub Copilot CLI アクセスとサブスクリプション
- Docker(オプション、webhook サービスをコンテナで実行する場合)
- アプリケーションリポジトリ: メンテナー権限(webhook 受信と MR 作成用)
- Copilot コーディングエージェントリポジトリ: オーナー権限(CI/CD 設定用)
- GitLab パーソナルアクセストークン スコープ:
api(フル API アクセス)read_repositorywrite_repository
権限管理とアクティビティ監査を改善するため、Copilot エージェント用に専用の GitLab ユーザーアカウントを作成することを推奨します。既存のアカウントも使用できますが、推奨されません。
-
「Copilot」または類似の名前で新しい GitLab アカウントを作成
-
このアカウントのパーソナルアクセストークンを生成:
-
このユーザーに適切な権限を付与(どちらかのアプローチを選択):
- オプション A(組織全体での使用を推奨): GitLab 管理者またはグループ オーナーとして設定
- これにより、Copilot ユーザーは GitLab インスタンスまたはグループ内のすべてのリポジトリにアクセス可能
- 複数のプロジェクトを管理する際に便利
- オプション B(限定的なスコープを推奨): 特定のアプリケーションリポジトリにメンバーとして追加
- 役割: Developer または Maintainer
- より詳細な制御、アクセスを制限したい場合に適しています
- このユーザーは Issue に割り当てられ、マージリクエストを作成します
- オプション A(組織全体での使用を推奨): GitLab 管理者またはグループ オーナーとして設定
Copilot ユーザー操作を使用
-
このリポジトリを Git URL 経由で GitLab にインポート
-
CI/CD 変数を設定
Settings → CI/CD → Variables に移動し、以下を追加:
変数 説明 Protected Masked GITLAB_TOKENパーソナルアクセストークン(ステップ 1 から) ✅ ✅ GITHUB_TOKEN有効な GitHub Copilot サブスクリプションを含む GitHub Copilot CLI アクセストークン ✅ ✅ 「Copilot Requests」権限が有効な fine-grained PAT である
GITHUB_TOKENを生成するには:- https://github.com/settings/personal-access-tokens/new にアクセス
- 「Permissions」の下で「add permissions」をクリックし、「Copilot Requests」を選択
- トークンを生成

-
GitLab Runner のセットアップ
GitLab インスタンスに Docker/Kubernetes executor を持つ利用可能な Runner がすでにある場合は、このステップをスキップできます。
以下の条件で GitLab Runner が設定されていることを確認してください:
- Docker executor(推奨)
- Docker イメージへのアクセス:
satomic/copilot-cli:latest
タグを使用する場合は、Runner に対応するタグがあることを確認するか、必要に応じて
.gitlab-ci.ymlを更新してください。新しい Runner の登録は GitLab のページガイダンスに従って完了でき、プロジェクトまたはグループレベルで登録できます。以下はプロジェクトレベルの例です:
-
Copilot CLI アクセスの設定
私は以下を含む Docker イメージ
satomic/copilot-cli:latestを構築しました:- GitHub Copilot CLI インストール済み
- 認証は事前設定済み、
GITHUB_TOKEN環境変数を読み取ります
または、Copilot CLI アクセスを持つ独自のイメージを構築してください。
-
.envファイルを作成cat > .env << EOF PIPELINE_TRIGGER_TOKEN=your-trigger-token, ステップ 2 で作成したリポジトリの Settings → CI/CD → Pipeline trigger tokens で生成 PIPELINE_PROJECT_ID=your-project-id, このリポジトリのプロジェクト ID(Settings → General で確認) PIPELINE_REF=main GITLAB_API_BASE=https://gitlab.com # セルフホストインスタンスの場合は変更が必要 WEBHOOK_SECRET_TOKEN= COPILOT_AGENT_USERNAME=copilot-agent # Copilot ボットの GitLab ID [email protected] # git コミット用のメールアドレス LISTEN_HOST=0.0.0.0 LISTEN_PORT=8080 ENABLE_INLINE_REVIEW_COMMENTS=true COPILOT_LANGUAGE=ja EOF
-
Docker で実行
docker run -itd \ --name gitlab-copilot-coding-agent-hook \ -p 8080:8080 \ --env-file .env \ --restart unless-stopped \ satomic/gitlab-copilot-coding-agent-hook:latest
-
ソースから実行(オプション)
git clone https://github.com/satomic/gitlab-copilot-coding-agent.git cd gitlab-copilot-coding-agent/ python3 main.py -
Hook URL webhook サービスの公開 URL を取得します。例:
http://your-server-ip:8080/webhook
一般的に、Copilot コーディングエージェントを使用したい開発者は、Copilot コーディングエージェントリポジトリにアクセスすることなく、自分のアプリケーションリポジトリで webhook を設定するだけで済みます。
-
アプリケーションリポジトリ → Settings → Webhooks に移動
-
Webhook を作成
-
webhook をテスト
- Test → Issue events をクリック
- webhook サービスログで受信成功を確認
- HTTP 200/202 レスポンスを確認
-
Issue 割り当てをテスト
-
MR Note をテスト
-
MR Reviewer をテスト
-
ログを確認
# Webhook サービスログ docker logs -f gitlab-copilot-coding-agent-hook # 保存された webhook ペイロードを確認 ls -la hooks/ # パイプラインログを確認 # Copilot コーディングエージェントリポジトリ → CI/CD → Pipelines に移動
-
アプリケーションリポジトリで Issue を作成
## 要件 - ユーザー認証を実装 - パスワードハッシュを追加 - ログインエンドポイントを作成 - JWT トークン生成を追加
-
Copilot に割り当て
- Issue ページで、「Copilot」ユーザーに割り当て
- システムが自動的に作業を開始
-
進捗を追跡
- Copilot がパイプラインリンク付きの確認コメントを投稿
- TODO チェックリスト付きのマージリクエストが作成される
- コードが自動的に実装される
- 最終コメントで完了を通知
注意: Issue のマージリクエストが既に存在する場合、Copilot はそれを検出し、Issue に通知を投稿して、重複した MR を作成する代わりに既存の MR で作業を続けるよう求めます。
-
レビュー & マージ
- MR で生成されたコードをレビュー
- 必要に応じて変更を要求(下記の MR Note 使用法を参照)
- 満足したら承認してマージ
-
既存の MR で、コメントを追加:
@copilot-agent add error handling to the login function -
サポートされている指示
- 機能追加:
@copilot-agent add unit tests for authentication - バグ修正:
@copilot-agent fix the null pointer exception in line 45 - リファクタリング:
@copilot-agent refactor the user service to use dependency injection - 更新:
@copilot-agent update dependencies to latest versions
- 機能追加:
-
Copilot が以下を実行:
- リクエストを確認
- 変更を実装
- MR ブランチにコミットしてプッシュ
- 変更のサマリーを投稿
-
MR ページで、Copilot ユーザーをレビュアーに割り当て
- MR ページの右側の「Reviewers」オプションを見つける
- Copilot ユーザー(例: copilot-agent)を選択
-
Copilot が以下を実行:
- コードレビューワークフローを自動的にトリガー
- ソースとターゲットブランチ間のすべてのコード変更を分析
- 以下を含む包括的なコードレビューを実行:
- コード品質と保守性
- ベストプラクティスとデザインパターン
- セキュリティ脆弱性チェック
- パフォーマンス分析
- テストカバレッジ評価
- ドキュメントの完全性
- 重要度別に分類された詳細なレビューレポートを MR に投稿
- 具体的な改善提案と推奨される修正を提供
-
レビューレポートの内容:
- 全体的な評価サマリー
- 重要度別に分類された問題(Critical、Major、Minor、Suggestions)
- 各問題にはファイルの場所、詳細な説明、修正の推奨事項が含まれます
- 最終的なレビュー推奨: APPROVE、REQUEST_CHANGES、または NEEDS_DISCUSSION
効果的な Issue の説明を書く:
- 要件を具体的に記述
- 受け入れ基準を含める
- コンテキストと例を提供
- 複数のタスクにはチェックリストを使用
MR Note コマンドの使用:
- コメントごとに 1 つの明確な指示
- 可能な限り特定のファイル/関数を参照
- 簡潔だが説明的に
- 次の指示の前に完了を待つ
コードレビュー:
- 生成されたコードを常にレビュー
- 実装をテスト
- セキュリティ問題を確認
- コーディング標準への準拠を確認
以下のファイルは実行中に生成されますが、コミットからは除外されます:
patch_raw.txt- Copilot の生の出力todo.md/todo_completed.md- タスクチェックリストplan.json- 実行プランcommit_msg.txt- 生成されたコミットメッセージmr_summary.txt- 変更サマリー
-
webhook 配信を確認
- アプリケーションリポジトリ → Settings → Webhooks → View Recent Deliveries
- 2xx ステータスコードを確認
-
webhook サービスを確認
curl -X POST https://webhook.yourdomain.com/webhook \ -H "Content-Type: application/json" \ -d '{"test": true}'


















