Skip to content
FunCoding

Search

Search docs, Skills and MCP

GitLab CI 与 Duo 工作流

区分社区 CI component 与 Duo 触发流程,配置模型身份和运行上下文。

This page has not been translated into English yet. The original Chinese version is shown below.

OpenCode 官方介绍两种 GitLab 接入方式:在普通 CI/CD pipeline 中运行,或通过 GitLab Duo 的评论触发流程运行。两者都使用 GitLab runner;这与把 GitLab Duo 当作模型提供商是不同配置,后者见GitLab 提供商。

普通 CI component

官方示例引用的是社区维护的 nagyv/gitlab-opencode component,不是 OpenCode 内置工作流。

在 Settings → CI/CD → Variables 中,将 OpenCode 认证 JSON 保存为 File 类型变量,并按官方步骤设置 Masked and hidden。.gitlab-ci.yml 可加入:

include:
  - component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
    inputs:
      config_dir: ${CI_PROJECT_DIR}/opencode-config
      auth_json: $OPENCODE_AUTH_JSON
      command: optional-custom-command
      message: "Your prompt here"

config_dir 指向该 job 的配置目录;auth_json 使用对应 File 变量;command 示例名需要替换为实际配置的命令,message 替换为任务文本。component 其他输入与版本兼容以其维护文档为准。

Duo 评论流程

配置完成后,可在 issue 或 merge request 中提及 @opencode,触发 pipeline 执行任务;触发短语可以改动。官方安装顺序包括环境设置、CI/CD、模型 API Key、服务账户、CI 变量和 flow 配置。

flow 示例的关键职责是:

  1. 在 runner 安装 OpenCode 与 GitLab CLI glab。
  2. 配置 GitLab token、host 以及 OpenCode 模型凭据。
  3. 将 AI_FLOW_CONTEXT、AI_FLOW_INPUT、AI_FLOW_EVENT 作为上下文、任务与事件传给 opencode run。
  4. 使用已认证的 glab 读取 issue/MR,需要反馈时写回 note。
  5. 由工作流负责检查变更并提交/推送,而不是让提示文本与脚本重复承担同一职责。

官方示例列出 ANTHROPIC_API_KEY、GITLAB_TOKEN_OPENCODE、GITLAB_HOST 三个变量,并将 GitLab token 供 glab 使用。选择其他模型服务时应按对应提供商设置认证。

调整示例后再运行

官方完整 flow 是特定演示环境的脚本,包含固定项目推送 URL、演示 Git 身份和一段非标准 shell 条件写法。本页不将它作为通用可复制生产配置;实际仓库路径、服务账户权限及 runner 环境需按 GitLab 当前 Agent Assistant 文档核对。

可以先用 @opencode explain this issue 验证读取和回复流程,再使用 @opencode fix this 或 @opencode review this merge request。修复流程会创建分支并提出 MR;审查流程返回反馈。