~/content/gitlab

GitLab

Use OpenCode in GitLab issues and merge requests.

last_updated: "2026-01-20"

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

在这两种情况下,OpenCode 都将在您的 GitLab runners 上运行。


##GitLab CI

OpenCode 在常规 GitLab 流水线中工作。您可以将其构建到流水线中作为 CI component

这里我们使用一个社区创建的 OpenCode CI/CD component — nagyv/gitlab-opencode


###Features

  • Use custom configuration per job: 使用自定义配置目录配置 OpenCode,例如 ./config/#custom-directory 以启用或禁用每个 OpenCode 调用的功能。
  • Minimal setup: CI component 在后台设置 OpenCode,您只需要创建 OpenCode 配置和初始提示。
  • Flexible: CI component 支持多个输入以自定义其行为

###Setup

  1. 将您的 OpenCode 身份验证 JSON 作为 File type CI 环境变量存储在 设置 (Settings) > CI/CD > 变量 (Variables) 下。 确保将它们标记为“Masked and hidden”。

  2. 将以下内容添加到您的 .gitlab-ci.yml 文件中。

    bash
    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"
    

有关更多输入和用例,请查看此 component 的文档


##GitLab Duo

OpenCode 与您的 GitLab 工作流程集成。 在评论中提及 @opencode,OpenCode 将在您的 GitLab CI 流水线中执行任务。


###Features

  • Triage issues: 要求 OpenCode 调查一个 issue 并向您解释。
  • Fix and implement: 要求 OpenCode 修复一个 issue 或实现一个 feature。 它将创建一个新分支并提出包含更改的合并请求。
  • Secure: OpenCode 在您的 GitLab runners 上运行。

###Setup

OpenCode 在您的 GitLab CI/CD 流水线中运行,以下是您需要设置的内容:

Note

💡 Tip

查看 GitLab 文档 以获取最新说明。

  1. 配置您的 GitLab 环境

  2. 设置 CI/CD

  3. 获取 AI 模型提供商 API key

  4. 创建一个服务帐户

  5. 配置 CI/CD 变量

  6. 创建一个 flow config 文件,这是一个示例:

    Flow configuration
    bash
    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
    

您可以参考 GitLab CLI agents 文档 以获取详细说明。


###Examples

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

Note

💡 Tip

您可以配置为使用与 @opencode 不同的触发短语。

  • Explain an issue

    在 GitLab issue 中添加此评论。

    bash
    @opencode explain this issue
    

    OpenCode 将读取该 issue 并回复清晰的解释。

  • Fix an issue

    在 GitLab issue 中,说:

    bash
    @opencode fix this
    

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

  • Review merge requests

    在 GitLab 合并请求上留下以下评论。

    bash
    @opencode review this merge request
    

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

Comments (Coming Soon)

Configure Giscus in environment variables to enable comments.