GitLab
索引内容
GitLab 连接器以项目 Owner 与项目名称标识一个目标项目。当前管理表单不提供全群组或多项目模式。
连接器不会为项目元数据、commit、wiki 页面、pipeline、release、snippet 或仓库目录单独创建文档。
前置条件
- 确认准确的 GitLab 根 URL,例如
https://gitlab.com或自托管实例的 HTTPS 根地址。 - 创建专用 GitLab access token,使其能打开目标项目,并读取已启用的 merge-request、issue、repository-tree 与 file API。
- 当前连接器凭据包含 GitLab URL 与一个 access-token 字段,不包含 application ID、application secret、OAuth callback 或 private-key 字段;不要把 application secret 填入 token 字段。
- 记录准确的项目 owner namespace 与项目名称。当前表单每个连接器只配置一个项目。
- 允许 OpenCore worker 访问 GitLab 主机,并允许用户浏览器访问同一主机以打开源链接。
- 向部署运维人员确认是否已启用
GITLAB_CONNECTOR_INCLUDE_CODE_FILES。应把它视为部署级内容决策,而不是单连接器复选框。
凭据
请使用 GitLab 实例根 URL,而不是项目页面。当前 schema 没有暴露独立的 GitLab application 或 OAuth 凭据流程。不同 token 类型与 GitLab 部署使用的准确 scope 标签可能不同;应验证已启用内容类型实际使用的项目 API 访问能力。
在 OpenCore 中配置
- 在管理后台打开连接器,选择 GitLab,并用 GitLab 根 URL 与 access token 创建凭据。
- 为一个项目填写准确的项目 Owner namespace 与项目名称。
- 在高级设置中启用或禁用包含 MR与包含 Issue。这些选项只控制 description,不会加入评论、diff 或 commit 内容。
- 向运维人员确认部署级代码文件设置。连接器页面没有逐项目代码文件控制、分支选择器、扩展名筛选或大小限制。
- 受限项目内容应选择 OpenCore 私有群组。仅当每个 OpenCore 账号都可以搜索此连接器产生的全部 MR、issue 与文件时才使用公开。
- 设置刷新与清理选项,创建连接器并运行一次索引。
标准管理后台创建的连接器使用 poll(input_type: poll):GitLab 不在管理后台 isLoadState 列表中。管理表单没有暴露 full/load 控件。因此,每次标准索引都会带时间窗口调用连接器 poll 路径,而不是调用其独立的 load_from_state 方法。
轮询期间,merge request 会按更新时间降序请求,并按轮询起止时间筛选。遇到早于轮询起点的 MR 时,当前实现会从整个轮询 pass 返回;如果同时启用了 MR 与 issue,issue 阶段因此可能被跳过。到达 issue 阶段后,issue 会按更新时间筛选,但当前 API 调用没有明确请求排序,而且遇到第一个早于起点的条目时也会返回。应针对目标 GitLab 版本与内容组合测试增量覆盖。
启用代码文件索引时,每次轮询都会在 MR 与 issue 筛选之前遍历并输出当前默认分支文件集。文件文档以摄取时间作为更新时间;轮询窗口不会用于跳过未变更仓库文件。
权限
GitLab token 决定 OpenCore 可以摄取哪些项目内容,但此连接器不会把 GitLab 项目成员关系、群组、角色、protected-branch 规则、confidential-issue 访问或逐条目权限同步到 OpenCore。当前管理后台访问选择器不把 GitLab 作为自动同步权限源提供。
因此,搜索访问仅由连接器的 OpenCore 私有群组或公开模式控制。任何能访问连接器的用户都可以搜索 token 产生的全部 MR description、issue description、作者标识与已启用的默认分支文件内容,即使该用户无法在 GitLab 打开源条目。
应使用最小权限 token、每项目一个连接器,并为不得共享内容的受众使用独立 OpenCore 私有群组。内容被索引后,不要依赖 GitLab confidential 标记、项目角色、protected branch 或源群组隐藏文档。
验证
- 运行连接器,并确认凭据解析到预期 GitLab 主机和准确 owner/project 路径。
- 搜索一个已启用 MR 的标题与独特 description,以及一个已启用 issue 或 work item 的标题与 description。
- 确认 MR 评论、approval、diff、issue 评论与 commit 内容不存在。
- 禁用代码文件索引时,确认 README 与源码不存在。启用时,搜索默认分支中的一个 README 和一个源码文件,再确认只存在于其他分支的文件不存在。
- 把一组已知源 issue 与增量轮询结果对账。先启用 MR,观察旧 MR 是否阻止 issue 阶段;再在诊断连接器中关闭 MR,以隔离 issue 循环。加入更新时间混合的 issue,并逐个比较预期 ID。关闭 MR 只能移除 MR 阶段的提前返回,不能保证完整的 issue 增量覆盖。
- 如果启用了代码文件,请在仓库没有变化时运行两次轮询,确认运维成本与重复文件 upsert 可以接受。同时测试有代表性的二进制、生成、vendor 与大文件。
- 测试每个已分配 OpenCore 群组和一个群组外用户,因为搜索时不会重新检查 GitLab 访问权限。