Skip to content

GitLab

SlopCode 通过 GitLab CI/CD 流水线或 GitLab Duo 与你的 GitLab 工作流集成。

在这两种情况下,SlopCode 都将在你的 GitLab Runner 上运行。


GitLab CI

SlopCode 可以在常规的 GitLab 流水线中运行。你可以将其作为 CI 组件 集成到流水线中。

这里我们使用的是社区创建的 SlopCode CI/CD 组件 — nagyv/gitlab-slopcode


功能特性

  • 按任务自定义配置:使用自定义配置目录来配置 SlopCode,例如 ./config/#custom-directory,以便为每次 SlopCode 调用启用或禁用特定功能。
  • 最小化配置:CI 组件会在后台完成 SlopCode 的设置,你只需创建 SlopCode 配置和初始提示词即可。
  • 灵活可定制:CI 组件支持多种输入参数来自定义其行为。

设置

  1. 将你的 SlopCode 身份验证 JSON 作为文件类型的 CI 环境变量存储在 Settings > CI/CD > Variables 下。请确保将其标记为 “Masked and hidden”。

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

    .gitlab-ci.yml
    include:
    - component: $CI_SERVER_FQDN/nagyv/gitlab-slopcode/slopcode@2
    inputs:
    config_dir: ${CI_PROJECT_DIR}/slopcode-config
    auth_json: $SLOPCODE_AUTH_JSON # The variable name for your SlopCode authentication JSON
    command: optional-custom-command
    message: "Your prompt here"

有关更多输入参数和使用场景,请查看该组件的文档


GitLab Duo

SlopCode 与你的 GitLab 工作流集成。 在评论中提及 @slopcode,SlopCode 将在你的 GitLab CI 流水线中执行任务。


功能特性

  • 问题分类:让 SlopCode 调查某个 issue 并为你解释。
  • 修复与实现:让 SlopCode 修复 issue 或实现某个功能。它会创建一个新分支,并提交包含更改的合并请求。
  • 安全可靠:SlopCode 在你的 GitLab Runner 上运行。

设置

SlopCode 在你的 GitLab CI/CD 流水线中运行,以下是设置所需的步骤:

  1. 配置你的 GitLab 环境

  2. 设置 CI/CD

  3. 获取 AI 模型提供商的 API 密钥

  4. 创建服务账户

  5. 配置 CI/CD 变量

  6. 创建流程配置文件,以下是一个示例:

    Flow configuration
    image: node:22-slim
    commands:
    - echo "Installing slopcode"
    - npm install --global slopcode
    - echo "Installing glab"
    - export GITLAB_TOKEN=$GITLAB_TOKEN_SLOPCODE
    - 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 SlopCode auth configuration"
    - mkdir --parents ~/.local/share/slopcode
    - |
    cat > ~/.local/share/slopcode/auth.json << EOF
    {
    "anthropic": {
    "type": "api",
    "key": "$ANTHROPIC_API_KEY"
    }
    }
    EOF
    - echo "Configuring git"
    - git config --global user.email "slopcode@gitlab.com"
    - git config --global user.name "SlopCode"
    - echo "Testing glab"
    - glab issue list
    - echo "Running SlopCode"
    - |
    slopcode 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_SLOPCODE
    - GITLAB_HOST

详细说明请参考 GitLab CLI agents 文档


示例

以下是在 GitLab 中使用 SlopCode 的一些示例。

  • 解释 issue

    在 GitLab issue 中添加以下评论。

    @slopcode explain this issue

    SlopCode 会阅读该 issue 并回复清晰的解释。

  • 修复 issue

    在 GitLab issue 中输入:

    @slopcode fix this

    SlopCode 会创建一个新分支,实现更改,并提交包含更改的合并请求。

  • 审查合并请求

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

    @slopcode review this merge request

    SlopCode 会审查合并请求并提供反馈。