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),用于确定网页、API、授权和令牌端点。
开始之前
你需要准备:
ChatGPT 工作空间管理员或所有者权限。
在 GitLab 中创建 OAuth 应用的权限:创建群组所属应用需要群组所有者权限,创建实例级应用需要实例管理员权限。
仅包含主机名的 GitLab 地址,不含 https://、端口或路径。请使用 GitLab Self-Managed 或 GitLab Dedicated 主机,而非 gitlab.com。
确定希望 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 应用
选择创建应用的位置
打开你的 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 的应用
创建应用草稿后,成员并不会自动获得该应用的使用权限。检查草稿后:
为应用草稿选择发布。
前往管理控制台,选择目标 ChatGPT 工作空间并打开插件,然后确认目标角色可使用 GitLab。
检查角色访问权限,确认需要使用此应用的角色已获得访问权限。
在配置操作中,检查可用的读取和写入操作。
在配置审批中,选择哪些情况下 ChatGPT 或 Codex 使用此应用前必须先由用户批准操作。
请一位有访问权限的测试用户从插件目录或设置 > 插件中打开 GitLab。确认该用户能够安装插件,并连接到使用 GitLab Self-Managed 模板创建的应用。
这些应用审批设置适用于 ChatGPT 对话和 Codex 对话线程。
为 Codex 代码审查设置 GitLab 活动
应用发布后,如果你计划使用 Codex 代码审查,请在 Codex 中配置 GitLab 活动。此活动设置流程会配置所需的 Webhook 事件。
打开 Codex 连接器设置。
配置工作空间服务账号。让 Codex 创建账号,或提供现有服务账号的个人访问令牌。
为项目或其某个父级群组启用 GitLab 活动。
如果 Codex 需要运行编码任务或使用项目专属配置,请创建项目环境。
GitLab 应用通过用户 OAuth 授权,在 ChatGPT 和 Codex 中执行读取操作及其他已启用的操作。对于 Codex 在 GitLab Self-Managed 或 GitLab Dedicated 上执行的审查写入操作,由工作空间管理的服务账号令牌决定 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 应用。
