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
ウェブ、API、認可、トークンの各エンドポイントを決定するための GitLab ホスト名(例:gitlab.example.com)
事前準備
以下が必要です。
ChatGPT ワークスペースの管理者権限またはオーナー権限
OAuth アプリケーションを作成するための GitLab 権限:グループ所有のアプリの場合はグループのオーナー権限、インスタンス全体のアプリの場合はインスタンスの管理者権限
https://、ポート、パスを含まない GitLab のホスト名のみgitlab.com ではなく、GitLab Self-Managed または GitLab Dedicated のホストを使用します。
ChatGPT と Codex で利用する GitLab アクションの決定(リポジトリ検索、マージリクエストやイシューのワークフロー、ファイル編集、より広範な Codex ワークフローなど)
ChatGPT と GitLab は別々のタブで開いておきます。ChatGPT に表示されたリダイレクト URI をそのままコピーします。自分で作成したり変更したりしないでください。
管理コンソールからアプリページを開くには、対象の ChatGPT ワークスペースを選択し、プラグインを開いて、レガシーアプリを管理を選択します。
準備する値
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 > Apps.
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 アプリケーションでは、機密を有効にしたままにします。
アクセスの設定と保存
インスタンス全体のアプリケーションでは、GitLab は信頼済みの選択を推奨しています。これにより、ユーザーへの認可の確認が省略されます。
api、write_repository、openid のスコープを選択します。
アプリケーションを管理できるユーザーを確認し、認可を行う GitLab ユーザーが適切なグループ権限とプロジェクト権限を持っていることを確認します。
アプリケーションを保存します。
OAuth スコープの要件
このテンプレートは、ChatGPT と Codex で有効な GitLab アクションに対して、次の OAuth スコープを要求します。
api:マージリクエスト、イシュー、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 向けのアプリの公開と管理
下書きアプリを作成しただけでは、メンバーは利用できません。下書きを確認したら、次の手順を実行します。
下書きアプリの公開を選択します。
管理コンソールで対象の ChatGPT ワークスペースを選択し、プラグインを開いて、対象のロールで 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 がレビューを書き込む際は、ワークスペースが管理するサービスアカウントのトークンによって、コメントやリアクションに使用する ID と対象となるプロジェクトが決まります。
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 アプリを選択していることを確認します。
