ChatGPT と Codex の GitLab 連携機能は現在ベータ版です。
概要
GitLab Self-Managed アプリテンプレートを使用して、GitLab Self-Managed または GitLab Dedicated インスタンス用のワークスペース固有の下書きアプリを作成します。GitLab のホスト名と OAuth アプリケーションの認証情報を入力し、下書きアプリを確認して、対象となるワークスペースメンバー向けに公開します。公開後、アプリで有効にしたアクションを ChatGPT の会話と Codex のセッションで利用できます。
サポート対象の GitLab の動作、提供状況、権限、データ利用、ネットワーク要件の概要については、GitLab を ChatGPT と Codex に接続するをご覧ください。
設定する内容
GitLab Self-Managed アプリテンプレートから、ワークスペース固有のアプリを作成します。アプリで使用するもの:
GitLab Self-Managed または GitLab Dedicated ホストに登録された GitLab OAuth アプリケーション
ユーザー認可に使用する GitLab OAuth のアプリケーション IDとシークレット
必須の OAuth スコープ:api、write_repository、openid
Web、API、認可、トークンの各エンドポイントを生成するための、gitlab.example.com などの GitLab ホスト名
開始前の準備
必要なもの:
ChatGPT ワークスペースの管理者またはオーナー権限
OAuth アプリケーションを作成できる GitLab 権限。グループ所有アプリの場合はグループの Owner 権限、インスタンス全体のアプリの場合はインスタンス管理者権限が必要です。
https://、ポート、パスを含まない GitLab ホスト名のみgitlab.com ではなく、GitLab Self-Managed または GitLab Dedicated ホストを使用してください。
ChatGPT と Codex でサポートする GitLab アクションの方針。たとえば、リポジトリ検索、マージリクエストや Issue のワークフロー、ファイル編集、より広範な Codex ワークフローなど
ChatGPT と GitLab を別々のタブで開いておいてください。ChatGPT に表示されたリダイレクト URIを正確にコピーしてください。新たに作成したり変更したりしないでください。
準備する値
GitLab ホスト名:例 gitlab.example.com
リダイレクト URI:ChatGPT のテンプレート設定フローからコピー
GitLab OAuth のアプリケーション ID
GitLab OAuth のシークレット
OAuth スコープ:ChatGPT のテンプレート設定フローからコピー
Start the template setup in ChatGPT
In ChatGPT, switch to the workspace where the app should be available.
Go to Workspace settings > Plugins.
In Directory, find GitLab, open its GitLab Self-Managed app template, and select Enable.
Enter a clear app name and description.
Enter the GitLab hostname, such as gitlab.example.com.
Copy the Redirect URI shown in ChatGPT, and keep this tab open.
Example: https://chatgpt.com/connector/oauth/<redirect_id>. Do not remove the redirect ID, add a trailing slash, or replace the URI with a generic ChatGPT URL.
GitLab での GitLab OAuth アプリケーションの作成
アプリケーションの作成場所の選択
https://gitlab.example.com などの GitLab ホストを開きます。
インスタンス全体のアプリケーションと、グループ所有のアプリケーションのどちらを作成するか選択します。この選択によってアプリケーションの管理者が決まります。プロジェクトへのアクセス権は、引き続き認可を行うユーザーの GitLab 権限と、付与された OAuth スコープに従います。
インスタンス全体のアプリケーションの場合は、管理者 > アプリケーションに移動します。グループ所有のアプリケーションの場合は、そのグループの設定 > アプリケーションに移動します。
アプリケーション情報の追加
新しいアプリケーションまたは新しいアプリケーションを追加を選択します。
GitLab Self-Managed や GitLab Dedicated など、分かりやすいアプリ名を入力します。
リダイレクト URIに、ChatGPT からコピーした URI を正確に貼り付けます。
このサーバー側 OAuth アプリケーションでは、Confidentialを有効のままにします。
アクセスの設定と保存
インスタンス全体のアプリケーションでは、GitLab はTrustedの選択を推奨しています。これにより、ユーザー認可画面が省略されます。
api、write_repository、openid の各スコープを選択します。
アプリケーションを管理できるユーザーを確認し、認可を行う GitLab ユーザーに適切なグループ権限とプロジェクト権限があることを確認します。
アプリケーションを保存します。
OAuth スコープの要件
テンプレートは、ChatGPT と Codex で有効にした GitLab アクションに対して、次の OAuth スコープを要求します。
api:マージリクエスト、Issue、CI/CD のアクションなど、アプリで提供される GitLab API 操作に必要
write_repository:Git 経由でリポジトリへの書き込み操作を行うために必要
openid:OpenID Connect の ID 情報とメンバーシップ情報に必要
GitLab OAuth 認証情報のコピー
保存した GitLab アプリケーションで、アプリケーション IDとシークレットをコピーします。シークレットは認証情報として安全に取り扱ってください。漏えいした場合は、GitLab で更新し、新しいワークスペースアプリを作成してください。
ChatGPT での設定完了
ChatGPT のテンプレート設定タブに戻ります。
GitLab のアプリケーション IDをOAuth クライアント IDに貼り付けます。
GitLab のシークレットをOAuth クライアントシークレットに貼り付けます。
GitLab ホスト名に、gitlab.example.com のようなホスト名のみが入力されていることを確認します。
下書きを作成を選択します。
下書きアプリの詳細を開き、「ロールアクセス」と「アクションを設定」を確認します。
ChatGPT と Codex 向けアプリの公開と管理
下書きアプリを作成しただけでは、メンバーが自動的に利用できるようにはなりません。下書きを確認した後:
下書きアプリの公開を選択します。
ワークスペース設定 > プラグインに移動し、対象のロールでGitLabを利用できることを確認します。
アプリを使用するロールのロールアクセスを確認します。
アクションを設定で、利用可能な読み取りアクションと書き込みアクションを確認します。
承認を設定で、ChatGPT または Codex がアプリを使用する前に、ユーザーによるアクションの承認が必要となる条件を選択します。
アクセス権のあるテストユーザーに、プラグインディレクトリまたは設定 > プラグインからGitLabを開いてもらいます。ユーザーがプラグインをインストールし、GitLab Self-Managed テンプレートから作成したアプリに接続できることを確認します。
これらのアプリ承認設定は、ChatGPT の会話と Codex のスレッドに適用されます。
Codex コードレビュー向け GitLab アクティビティの設定
アプリの公開後、Codex コードレビューを使用する場合は、Codex で GitLab アクティビティを設定します。このアクティビティ設定により、必要な Webhook イベントが設定されます。
Codex コネクタ設定を開きます。
ワークスペースのサービスアカウントを設定します。Codex にアカウントを作成させるか、既存のサービスアカウントのパーソナルアクセストークンを指定します。
プロジェクトまたはその親グループのいずれかでGitLab アクティビティを有効にします。
Codex でコーディングタスクの実行やプロジェクト固有の設定が必要な場合は、プロジェクト環境を作成します。
GitLab アプリは、ChatGPT と Codex での読み取りおよび有効なアクションにユーザー OAuth を使用します。GitLab Self-Managed または GitLab Dedicated で Codex がレビューを書き込む場合、Codex がコメントやリアクションを行う際の ID と対象プロジェクトは、ワークスペース管理のサービスアカウントトークンによって決まります。
詳細:Codex で GitLab のマージリクエストをレビューする
GitLab アプリの接続とテスト
アクセス権のあるユーザーとして、プラグインディレクトリまたは設定 > プラグインからGitLabを開きます。プラグインをインストールを選択し、続いて接続を選択します。
ワークスペースに複数の GitLab アプリがある場合は、この GitLab Self-Managed または GitLab Dedicated ホスト用のアプリを選択します。
求められたら、GitLab OAuth アプリケーションを認可します。
まず、アクセス可能なプロジェクトの一覧表示や既知のマージリクエストの取得など、小規模な読み取りアクションを ChatGPT または Codex で実行します。
書き込みアクションを有効にした場合は、広く展開する前に、リスクの低いプロジェクトと、使用予定の各製品でテストしてください。
ホスト名と OAuth の動作
アプリはホスト名から GitLab の各エンドポイントを生成します。gitlab.example.com のように、ホスト名のみを入力してください。https://、API やリポジトリのパス、ポート、gitlab.com は含めないでください。このテンプレートは GitLab Self-Managed または GitLab Dedicated 用です。GitLab.com(SaaS)では、GitLab アプリを使用してください。
GitLab Self-Managed アプリの設定に関するトラブルシューティング
リダイレクト URI の不一致:GitLab OAuth アプリケーションのリダイレクト URI が、ChatGPT に表示されるリダイレクト URI と完全に一致していることを確認してください。
ChatGPT で下書きアプリを作成または保存できない:ホスト名、アプリケーション ID、シークレット、リダイレクト URI が入力されていることを確認してください。
認証には成功するが、プロジェクトの呼び出しに失敗する:認可を行う GitLab ユーザーがプロジェクトにアクセスでき、OAuth アプリケーションにテンプレート所定のスコープが設定されていることを確認してください。
API から 403 または権限不足のエラーが返される:接続済みの GitLab アカウントに必要なプロジェクトまたはグループ権限があり、OAuth アプリケーションにテンプレート所定のスコープが含まれていることを確認してください。
アクセスできるプロジェクトがない:ユーザーにプロジェクトへのアクセス権があり、目的の GitLab インスタンスに接続し、ChatGPT または Codex で正しい GitLab アプリを選択していることを確認してください。
