ChatGPT 和 Codex 中的 GitLab 功能目前处于 Beta 阶段。
概述
使用 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。
您的 GitLab 主机名(例如 gitlab.example.com),用于确定 Web、API、授权和 Token 端点。
开始之前
您需要:
ChatGPT 工作空间管理员或所有者权限。
在 GitLab 中创建 OAuth 应用的权限:对于群组所有的应用,需要群组 Owner 权限;对于实例范围的应用,需要实例管理员权限。
仅提供 GitLab 主机名,不包含 https://、端口或路径。请使用 GitLab Self-Managed 或 GitLab Dedicated 主机,而非 gitlab.com。
确定 ChatGPT 和 Codex 应支持哪些 GitLab 操作,例如代码仓库搜索、合并请求工作流、议题工作流、文件编辑或更广泛的 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 应用
选择应用的创建位置
打开您的 GitLab 主机,例如 https://gitlab.example.com。
选择创建实例范围的应用,还是群组所有的应用。此选择决定由谁管理应用;项目访问权限仍取决于授权用户的 GitLab 权限和授予的 OAuth 范围。
对于实例范围的应用,请前往管理员 > 应用。对于群组所有的应用,请前往该群组的设置 > 应用。
添加应用详细信息
选择新建应用或添加新应用。
输入清晰易懂的应用名称,例如 GitLab Self-Managed 或 GitLab Dedicated。
在重定向 URI 中,粘贴从 ChatGPT 复制的确切 URI。
对于此服务器端 OAuth 应用,请保持机密处于启用状态。
配置访问权限并保存
对于实例范围的应用,GitLab 建议选择受信任。这样可以跳过用户授权提示。
选择 api、write_repository 和 openid 范围。
检查哪些人可以管理该应用,并确认授权的 GitLab 用户具有适当的群组和项目权限。
保存应用。
OAuth 范围要求
对于在 ChatGPT 和 Codex 中启用的 GitLab 操作,该模板会请求以下 OAuth 范围:
api:应用提供的 GitLab API 操作需要此范围,包括合并请求、议题和 CI/CD 操作。
write_repository:通过 Git 执行代码仓库写入操作需要此范围。
openid:获取 OpenID Connect 身份和成员信息需要此范围。
复制 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 创建账户,或为现有服务账户提供个人访问 Token。
为项目或其任一上级群组启用 GitLab 活动。
如果 Codex 需要运行编码任务或使用项目专用设置,请创建项目环境。
GitLab 应用通过用户 OAuth,在 ChatGPT 和 Codex 中执行读取操作和已启用的操作。对于 Codex 在 GitLab Self-Managed 或 GitLab Dedicated 上执行的审查写入操作,由工作空间管理的服务账户 Token 决定 Codex 可发表评论或回应时所使用的身份和项目范围。
了解详情:使用 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 应用。
