GitLab CI 与 Duo 工作流
区分社区 CI component 与 Duo 触发流程,配置模型身份和运行上下文。
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 示例的关键职责是:
- 在 runner 安装 OpenCode 与 GitLab CLI
glab。 - 配置 GitLab token、host 以及 OpenCode 模型凭据。
- 将
AI_FLOW_CONTEXT、AI_FLOW_INPUT、AI_FLOW_EVENT作为上下文、任务与事件传给opencode run。 - 使用已认证的
glab读取 issue/MR,需要反馈时写回 note。 - 由工作流负责检查变更并提交/推送,而不是让提示文本与脚本重复承担同一职责。
官方示例列出 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;审查流程返回反馈。