GitLab
在 GitLab issues 和 merge requests 中使用 OpenCode。
OpenCode 通过你的 GitLab CI/CD 管道或 GitLab Duo 与你的 GitLab 工作流集成。
在这两种情况下,OpenCode 都将在你的 GitLab runners 上运行。
GitLab CI
OpenCode 在常规 GitLab 管道中工作。你可以将其作为 CI 组件 构建到管道中。
这里我们使用社区为 OpenCode 创建的 CI/CD 组件 — nagyv/gitlab-opencode。
功能 Features
- Use custom configuration per job (每个作业使用自定义配置): 使用自定义配置目录配置 OpenCode,例如
./config/#custom-directory,以便为每次 OpenCode 调用启用或禁用功能。 - Minimal setup (最小化设置): CI 组件在后台设置 OpenCode,你只需创建 OpenCode 配置和初始提示词。
- Flexible (灵活): CI 组件支多种输入以自定义其行为。
设置 Setup
-
将你的 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 # The variable name for your OpenCode authentication JSONcommand: optional-custom-commandmessage: "Your prompt here"
有关此组件的更多输入和用例,请查看文档。
GitLab Duo
OpenCode 与你的 GitLab 工作流集成。
在评论中提及 @opencode,OpenCode 将在你的 GitLab CI 管道中执行任务。
功能 Features
- Triage issues (分类问题): 让 OpenCode 调查问题并向你解释。
- Fix and implement (修复和实现): 让 OpenCode 修复问题或实现功能。 它将创建一个新分支并提出包含更改的合并请求(MR)。
- Secure (安全): OpenCode 在你的 GitLab runners 上运行。
设置 Setup
OpenCode 在你的 GitLab CI/CD 管道中运行,以下是你设置它所需的内容:
-
配置你的 GitLab 环境
-
设置 CI/CD
-
获取 AI 模型提供商 API 密钥
-
创建服务帐户
-
配置 CI/CD 变量
-
创建流配置文件,这里是一个示例:
Flow configuration
image: node:22-slimcommands:- echo "Installing opencode"- npm install --global opencode-ai- echo "Installing 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 "Configuring glab"- echo $GITLAB_HOST- echo "Creating OpenCode auth configuration"- mkdir --parents ~/.local/share/opencode- |cat > ~/.local/share/opencode/auth.json << EOF{"anthropic": {"type": "api","key": "$ANTHROPIC_API_KEY"}}EOF- echo "Configuring git"- git config --global user.email "opencode@gitlab.com"- git config --global user.name "OpenCode"- echo "Testing glab"- glab issue list- echo "Running OpenCode"- |opencode run "You are an AI assistant helping with GitLab operations.Context: $AI_FLOW_CONTEXTTask: $AI_FLOW_INPUTEvent: $AI_FLOW_EVENTPlease execute the requested task using the available GitLab tools.Be thorough in your analysis and provide clear explanations.<important>Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.You don't need to commit or push up changes, those will be done automatically based on the file changes you make.</important>"- git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF- echo "Checking for git changes and pushing if any exist"- |if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; thenecho "Git changes detected, adding and pushing..."git add .if git diff --cached --quiet; thenecho "No staged changes to commit"elseecho "Committing changes to branch: $CI_WORKLOAD_REF"git commit --message "Codex changes"echo "Pushing changes up to $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 "Changes successfully pushed"fielseecho "No git changes detected, skipping push"fivariables:- ANTHROPIC_API_KEY- GITLAB_TOKEN_OPENCODE- GITLAB_HOST
你可以参考 GitLab CLI 智能体文档 获取详细说明。
示例 Examples
以下是如何在 GitLab 中使用 OpenCode 的一些示例。
-
Explain an issue (解释问题)
在 GitLab issue 中添加此评论。
@opencode explain this issueOpenCode 将阅读该 issue 并回复清晰的解释。
-
Fix an issue (修复问题)
在 GitLab issue 中说:
@opencode fix thisOpenCode 将创建一个新分支,实施更改,并打开包含更改的合并请求。
-
Review merge requests (审查合并请求)
在 GitLab 合并请求上留下以下评论。
@opencode review this merge requestOpenCode 将审查合并请求并提供反馈。