📚AI 编程官方教程中文版
官方教程中文版集成

接入 GitLab

在 GitLab Issue、Merge Request 和 CI/CD 中使用 OpenCode。

OpenCode 可以通过 GitLab CI/CD 或 GitLab Duo 接入 GitLab 工作流。它运行在你的 GitLab Runner 上,用评论或流水线触发任务。

官方教程提供了 CI 组件、GitLab Duo、认证变量和示例流程。这里重点讲:新手应该选哪条路径、第一次怎么验证、哪些配置容易出问题。

先理解它解决什么问题

GitLab 集成适合把 OpenCode 放进团队协作流程:

  • 在 issue 中解释问题、补充排查建议。
  • 在 Merge Request 中审查改动。
  • 为小范围问题创建分支和 MR。
  • 在 CI/CD 中按固定 prompt 执行检查。

它的本质是“在 Runner 上运行的 AI 协作步骤”。因此你要先理解 Runner 权限、变量、仓库写权限,再让它改代码。

两条接入路径

GitLab 主要有两种接入方式:

  • GitLab CI 组件:适合先从普通流水线接入,配置更直接。
  • GitLab Duo:适合已经使用 Duo Agent Platform,希望通过 @opencode 评论触发。

新手建议先看 CI 组件。Duo 路径牵涉 GitLab 侧 Agent Platform、服务账户和更完整的组织配置,适合团队环境再上。

GitLab CI 组件怎么理解

CI 组件的思路是:你在 .gitlab-ci.yml 里引用 OpenCode 组件,并把认证 JSON 和初始 prompt 传进去。

最小结构是:

include:
  - component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
    inputs:
      auth_json: $OPENCODE_AUTH_JSON
      message: "Explain this issue and suggest the next step"

这里最关键的是 OPENCODE_AUTH_JSON。它应该作为 GitLab CI/CD 的 File 类型变量保存,并标记为 masked / hidden。不要把认证 JSON 写进仓库。

第一次怎么试

第一次不要让它自动提交代码。先做只读验证:

  1. 创建测试 issue 或测试 MR。
  2. 用 CI 组件传入一个只读 prompt。
  3. 确认 Runner 能安装依赖、读取上下文、输出结果。
  4. 再逐步给写权限或 MR 创建能力。

推荐第一条 prompt:

Read the current issue or merge request context. Summarize the problem and list the safest next action. Do not change files.

先确认“能理解”,再确认“能修改”。

GitLab Duo 适合什么场景

如果你希望在 GitLab 评论里提及 @opencode 触发任务,可以走 GitLab Duo 路径。

适合:

  • 团队已经使用 GitLab Duo / Agent Platform。
  • 有稳定 Runner 和服务账户。
  • 希望在 issue / MR 评论里直接指派 OpenCode。

不适合:

  • 只是个人仓库想快速试用。
  • 还没配置好 GitLab CI 变量和服务账户。
  • 不清楚 Runner 会拿到哪些权限。

Duo 的具体平台配置建议直接跟随 GitLab 官方文档,因为这部分会随 GitLab 平台能力更新。

怎么写评论

评论要给出明确边界:

@opencode explain this issue
@opencode review this merge request. Do not change files.
@opencode fix this small typo and open a merge request

不要只写 @opencode fix。GitLab 里的上下文可能很长,边界越清楚,输出越稳定。

权限和变量

GitLab 集成最容易出问题的是变量和权限:

  • 模型 API Key 放 CI/CD Variables。
  • GitLab Token 或服务账户 Token 只给必要 scope。
  • 能读 issue / MR 不等于能 push 分支。
  • Runner 所在环境能访问外网和模型 API。
  • CI 日志不要输出认证 JSON 或 API Key。

如果 OpenCode 需要创建 MR,就必须有对应仓库写权限;如果只做解释和审查,先不要给写权限。

怎么判断接入成功

成功标准:

  • Pipeline 能被正确触发。
  • Runner 能安装并运行 OpenCode。
  • OpenCode 能读取 GitLab 上下文。
  • 只读任务不会意外提交代码。
  • 写入任务能创建分支或 MR,并且提交者身份符合预期。

如果失败,先看 CI 日志里的三类问题:变量不存在、Token 权限不足、Runner 无法访问模型服务。

新手常见坑

  • 把认证 JSON 当普通变量,而不是 File 类型变量。
  • 在日志里 echo 密钥或 auth.json。
  • 一开始就让它 push 代码,导致权限和安全问题一起出现。
  • 没有区分 issue 解释、MR review、自动修复三类任务。
  • 忽略 Runner 环境:本地能跑,不代表 CI Runner 能访问同样的网络和工具。

© Anomaly

最近更新: 2026年5月1日

On this page