Skip to content

OpenCode 通过两种方式集成到 GitLab 工作流中:一是通过标准 GitLab CI/CD Pipeline 按需触发;二是通过 GitLab Duo,在 Issue 或 MR 评论中提及 @opencode 即可自动执行任务。两种方式都在你自己的 GitLab Runner 上运行,代码不离开你的基础设施。

OpenCode 通过两种路径集成到 GitLab 工作流:

  1. GitLab CI:在标准 Pipeline 中作为 CI 组件使用
  2. 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
  • 灵活可扩展:支持多种输入参数自定义行为

配置

  1. Settings → CI/CD → Variables 中将 OpenCode 认证 JSON 存为 File 类型的 CI 环境变量,标记为"Masked and hidden"。

  2. .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 官方文档 获取最新安装指南。

  1. 配置你的 GitLab 环境
  2. 设置 CI/CD
  3. 获取 AI 模型 Provider 的 API Key
  4. 创建服务账户
  5. 配置 CI/CD 变量
  6. 创建 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 this

OpenCode 会新建分支、实现修复并提交 Merge Request。

审查 Merge Request:在 MR 中评论

@opencode review this merge request

OpenCode 会审查代码并给出反馈意见。


常见问题

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。