Appearance
OpenCode 通过两种方式集成到 GitLab 工作流中:一是通过标准 GitLab CI/CD Pipeline 按需触发;二是通过 GitLab Duo,在 Issue 或 MR 评论中提及 @opencode 即可自动执行任务。两种方式都在你自己的 GitLab Runner 上运行,代码不离开你的基础设施。
OpenCode 通过两种路径集成到 GitLab 工作流:
- GitLab CI:在标准 Pipeline 中作为 CI 组件使用
- GitLab Duo:在 Issue 或 MR 评论中
@opencode触发
两种方式都在你自己的 GitLab Runner 上运行。
GitLab CI
OpenCode 可以作为 CI 组件 接入标准 GitLab Pipeline。
以下示例使用社区创建的 CI 组件:nagyv/gitlab-opencode。
功能
- 每个 Job 单独配置:通过
config_dir为不同 Job 使用不同 OpenCode 配置 - 最小化安装:CI 组件在后台处理 OpenCode 安装,你只需提供配置和 Prompt
- 灵活可扩展:支持多种输入参数自定义行为
配置
在 Settings → CI/CD → Variables 中将 OpenCode 认证 JSON 存为 File 类型的 CI 环境变量,标记为"Masked and hidden"。
在
.gitlab-ci.yml中添加:
yaml
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: "在这里写你的 Prompt"更多输入参数和使用案例,参考 组件文档。
GitLab Duo
通过 GitLab Duo 集成,在评论中提及 @opencode 就能触发任务。
功能
- Issue 分析:分析 Issue 并给出解释
- 修复与实现:自动创建新分支、实现改动并提交 Merge Request
- 安全可控:运行在你自己的 GitLab Runner 上
配置步骤
提示:查看 GitLab 官方文档 获取最新安装指南。
- 配置你的 GitLab 环境
- 设置 CI/CD
- 获取 AI 模型 Provider 的 API Key
- 创建服务账户
- 配置 CI/CD 变量
- 创建 Flow 配置文件
完整的 Flow 配置示例(包含 OpenCode 认证、glab CLI 安装、自动提交改动):
yaml
image: node:22-slim
commands:
- npm install --global opencode-ai
- export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
- apt-get update --quiet && apt-get install --yes curl wget gpg git
- curl --silent --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
- apt-get install --yes glab
- mkdir --parents ~/.local/share/opencode
- |
cat > ~/.local/share/opencode/auth.json << EOF
{
"anthropic": {
"type": "api",
"key": "$ANTHROPIC_API_KEY"
}
}
EOF
- git config --global user.email "opencode@gitlab.com"
- git config --global user.name "OpenCode"
- |
opencode run "
你是一个协助 GitLab 操作的 AI 助手。
上下文: $AI_FLOW_CONTEXT
任务: $AI_FLOW_INPUT
事件: $AI_FLOW_EVENT
请使用可用的 GitLab 工具执行请求的任务。
使用 glab CLI 访问 GitLab 数据(glab 已完成认证)。
如果被要求分析 MR 或 Issue,请在对应条目中回复说明。
不需要手动 commit 或 push,文件改动会自动处理。
"
- git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
- |
if ! git diff --quiet || ! git diff --cached --quiet; then
git add .
git commit --message "OpenCode changes"
git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/your-project.git $CI_WORKLOAD_REF
fi
variables:
- ANTHROPIC_API_KEY
- GITLAB_TOKEN_OPENCODE
- GITLAB_HOST参考 GitLab CLI agents 文档 获取完整说明。
使用示例
提示:触发词
@opencode可以配置为其他短语。
分析 Issue:在 Issue 中评论
@opencode 解释这个问题OpenCode 会读取 Issue 内容并回复清晰的分析。
修复 Bug:在 Issue 中评论
@opencode fix thisOpenCode 会新建分支、实现修复并提交 Merge Request。
审查 Merge Request:在 MR 中评论
@opencode review this merge requestOpenCode 会审查代码并给出反馈意见。
常见问题
Q: GitLab CI 方式和 GitLab Duo 方式有什么区别?
A: GitLab CI 方式更灵活,可以接入任意 Pipeline 步骤,适合自动化任务。GitLab Duo 方式更适合交互式场景——在 Issue 或 MR 中直接对话,类似于 GitHub 的 /opencode 命令。
Q: OpenCode 运行时会访问仓库外部的资源吗?
A: 不会。OpenCode 在 GitLab Runner 上运行,只能访问 Runner 环境中可用的资源,以及你显式配置的 API Key 对应的 AI 服务。
Q: 我的项目不在 GitLab.com,能用 GitLab Duo 集成吗?
A: GitLab Duo 依赖 GitLab 的 Duo Agent 平台,需要对应版本的 GitLab(Self-Hosted 或 GitLab.com)支持。GitLab CI 方式则适用于任何版本的 GitLab。