GitLab
在 GitLab issues 和 merge requests 中使用 OpenCode。
OpenCode 通过你的 GitLab CI/CD 流水线或 GitLab Duo 与你的 GitLab 工作流集成。
在这两种情况下,OpenCode 都将在你的 GitLab runner 上运行。
GitLab CI
OpenCode 可以在常规的 GitLab 流水线中工作。你可以将其作为一个 CI 组件 构建到流水线中。
这里我们使用的是一个社区创建的 OpenCode CI/CD 组件 —— nagyv/gitlab-opencode。
功能
- 每个作业使用自定义配置: 为 OpenCode 配置自定义配置目录(例如
./config/#custom-directory),以便在每次调用 OpenCode 时启用或禁用特定功能。 - 极简设置: CI 组件会在后台设置 OpenCode,你只需创建 OpenCode 配置和初始提示词。
- 灵活: CI 组件支持多个输入项,用于自定义其行为。
设置
-
将你的 OpenCode 认证 JSON 作为文件类型的 CI 环境变量存储在 Settings > CI/CD > Variables 下。确保将它们标记为 “Masked and hidden”(掩码且隐藏)。
-
将以下内容添加到你的
.gitlab-ci.yml文件中。.gitlab-ci.yml include:- component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2inputs:config_dir: ${CI_PROJECT_DIR}/opencode-configauth_json: $OPENCODE_AUTH_JSON # 你的 OpenCode 认证 JSON 变量名command: optional-custom-commandmessage: "你的提示词"
有关此组件的更多输入项和使用案例,请 查看文档。
GitLab Duo
OpenCode 与你的 GitLab 工作流集成。
在评论中提及 @opencode,OpenCode 就会在你的 GitLab CI 流水线中执行任务。
功能
- 分拣 Issue: 让 OpenCode 调查某个 Issue 并向你解释。
- 修复与实现: 让 OpenCode 修复 Bug 或实现功能。它将创建一个新分支,并针对这些更改发起合并请求 (Merge Request)。
- 安全: OpenCode 在你的 GitLab runner 上运行。
设置
OpenCode 在你的 GitLab CI/CD 流水线中运行,以下是设置所需的步骤:
-
配置你的 GitLab 环境
-
设置 CI/CD
-
获取 AI 模型提供商的 API 密钥
-
创建服务账号
-
配置 CI/CD 变量
-
创建一个流程配置文件,示例如下:
流程配置
image: node:22-slimcommands:- echo "正在安装 opencode"- npm install --global opencode-ai- echo "正在安装 glab"- export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE- apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*- curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash- apt-get install --yes glab- echo "正在配置 glab"- echo $GITLAB_HOST- echo "正在创建 OpenCode 认证配置"- mkdir --parents ~/.local/share/opencode- |cat > ~/.local/share/opencode/auth.json << EOF{"anthropic": {"type": "api","key": "$ANTHROPIC_API_KEY"}}EOF- echo "正在配置 git"- git config --global user.email "opencode@gitlab.com"- git config --global user.name "OpenCode"- echo "正在测试 glab"- glab issue list- echo "正在运行 OpenCode"- |opencode run "你是一个帮助处理 GitLab 操作的 AI 助手。上下文: $AI_FLOW_CONTEXT任务: $AI_FLOW_INPUT事件: $AI_FLOW_EVENT请使用可用的 GitLab 工具执行请求的任务。分析要透彻,并提供清晰的解释。<important>请使用 glab CLI 访问 GitLab 中的数据。glab CLI 已经过身份验证。你可以运行相应的命令。如果要求你总结 MR 或 Issue,或者要求你提供更多信息,请在 MR/Issue 中回复一条注释,以便用户查看。你不需要提交或推送更改,这些将根据你所做的文件更改自动完成。</important>"- git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF- echo "正在检查 git 更改,如果存在则推送"- |if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; thenecho "检测到 Git 更改,正在添加并推送..."git add .if git diff --cached --quiet; thenecho "没有待提交的暂存更改"elseecho "正在将更改提交到分支: $CI_WORKLOAD_REF"git commit --message "Codex changes"echo "正在将更改推送到 $CI_WORKLOAD_REF"git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REFecho "更改推送成功"fielseecho "未检测到 git 更改,跳过推送"fivariables:- ANTHROPIC_API_KEY- GITLAB_TOKEN_OPENCODE- GITLAB_HOST
你可以参考 GitLab CLI agents 文档 获取详细说明。
示例
以下是关于如何在 GitLab 中使用 OpenCode 的一些示例。
-
解释 Issue
在 GitLab issue 中添加此评论。
@opencode 解释这个 issueOpenCode 将读取该 issue 并回复清晰的解释。
-
修复 Issue
在 GitLab issue 中输入:
@opencode 修复这个OpenCode 将创建一个新分支,实现更改,并针对这些更改发起合并请求。
-
审查合并请求 (Merge Request)
在 GitLab 合并请求中留下以下评论。
@opencode 审查此合并请求OpenCode 将审查该合并请求并提供反馈。