---
title: GitLab
description: 在 GitLab 问题和合并请求中使用 OpenCode。
---

OpenCode 通过 GitLab CI/CD 管道或与 GitLab Duo 与您的 GitLab 工作流程集成。

在这两种情况下，OpenCode 都会在您的 GitLab 运行器上运行。

---

## GitLab。

OpenCode 在常规 GitLab 管道中工作。您可以将其构建为管道 [CI](https://docs.gitlab.com/ee/ci/components/)

在这里，我们使用社区创建的 OpenCode CI/CD 组件 — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode)。

---

### 特徵

- **每个作业使用每个自定义配置**：使用自定义配置目录配置OpenCode，例如`./config/#custom-directory`以启用或禁用OpenCode调用的功能。
- 错误 500（服务器错误）！！1500。这是一个错误。出现错误。请稍后重试。我们只知道这些。
- **灵活**：CI 组件支持多种输入来自定义其行为

---

### 設定

1. 将 OpenCode 身份验证 JSON 作为文件类型 CI 环境变量存储在 **设置** > **CI/CD** > **变量** 下。确保将它们标记为“隐藏和隐藏”。
2. 将以下内容添加到您的 `.gitlab-ci.yml` 文件中。

   ```yaml title=".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 # The variable name for your OpenCode authentication JSON
         command: optional-custom-command
         message: "Your prompt here"
   ```

有关此组件的更多输入和示例[查看文档](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode)。

---

## 亚搏体育app二人组

OpenCode 与您的 GitLab 工作流程集成。
在评论中提及`@opencode`，OpenCode 将在您的 GitLab CI 管道中执行任务。

---

### 特徵

- **分类问题**：要求 OpenCode 调查问题并向您解释。
- **修复和实施**：要求OpenCode修复问题或实施功能。
  它將創建一個新分支並提出包含更改的合併請求。
- **安全**：OpenCode 在您的 GitLab 运行器上运行。

---

### 設定

OpenCode 在您的 GitLab CI/CD 管道中运行，您需要进行以下设置：

:::tip
查看[**GitLab 文档**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/) 获取最新说明。
:::

1.  配置您的 GitLab 环境
2.  安装CI/CD
3.  获取AI模型成功 API键
4.  創建服務帳戶
5.  配置 CI/CD 变量
6.  創建一個流配置文件，這是一個示例：

        <details>

    <summary>Flow configuration</summary>

    ```yaml
    image: node:22-slim
    commands:
      - 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_CONTEXT
        Task: $AI_FLOW_INPUT
        Event: $AI_FLOW_EVENT

        Please 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)" ]; then
          echo "Git changes detected, adding and pushing..."
          git add .
          if git diff --cached --quiet; then
            echo "No staged changes to commit"
          else
            echo "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_REF
            echo "Changes successfully pushed"
          fi
        else
          echo "No git changes detected, skipping push"
        fi
    variables:
      - ANTHROPIC_API_KEY
      - GITLAB_TOKEN_OPENCODE
      - GITLAB_HOST
    ```

        </details>

详细说明可以参考[GitLab CLI 代理文档](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/)。

---

### 示例

以下是如何在 GitLab 中使用 OpenCode 的一些示例。

:::tip
您可以配置使用 `@opencode` 不同的触发主板。
:::

- **解釋一個問題**

  在 GitLab 问题中添加此评论。

  ```
  @opencode explain this issue
  ```

  OpenCode 将阅读该问题并回复并提供清晰的解释。

- **解決問題**

  在 GitLab 问题中，说：

  ```
  @opencode fix this
  ```

  OpenCode 将创建一个新分支，实施更改，并打开包含更改的合并请求。

- **審查合併請求**

  对 GitLab 合并请求留下以下评论。

  ```
  @opencode review this merge request
  ```

  OpenCode 将审核合并请求并提供反馈。
