Dropstone CLI

GitLab

在 GitLab 问题和合并请求中使用 Dropstone。

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

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


GitLab CI

Dropstone 可在常规 GitLab 流水线中运行。您可以将其作为 CI 组件 构建到流水线中。

这里我们使用一个社区创建的 Dropstone CI/CD 组件:nagyv/gitlab-dropstone


功能特性

  • 每个作业使用自定义配置:使用自定义配置目录配置 Dropstone,例如 ./config/#custom-directory,以便在每次 Dropstone 调用时启用或禁用功能。
  • 极简设置:CI 组件会在后台设置 Dropstone,您只需创建 Dropstone 配置和初始提示词。
  • 灵活:CI 组件支持多种输入,用于自定义其行为。

设置

  1. 将您的 Dropstone 身份验证 JSON 存储为文件类型的 CI 环境变量,路径为 设置 > CI/CD > 变量。请确保将其标记为“掩码和隐藏”。

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

    include:
      - component: $CI_SERVER_FQDN/nagyv/gitlab-dropstone/dropstone@2
        inputs:
          config_dir: ${CI_PROJECT_DIR}/dropstone-config
          auth_json: $DROPSTONE_AUTH_JSON # 您的 Dropstone 身份验证 JSON 的变量名
          command: optional-custom-command
          message: "您的提示词"
    

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


GitLab Duo

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


功能特性

  • 问题分类:让 Dropstone 查看问题并向您解释。
  • 修复和实现:让 Dropstone 修复问题或实现功能。 它将创建新分支并提交包含更改的合并请求。
  • 安全:Dropstone 在您的 GitLab 运行器上运行。

设置

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

Tip

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

  1. 配置您的 GitLab 环境
  2. 设置 CI/CD
  3. 获取 Dropstone API 密钥(请参阅 快速入门
  4. 创建服务账户
  5. 配置 CI/CD 变量
  6. 创建流程配置文件。示例:
image: node:22-slim
commands:
  - echo "正在安装 Dropstone"
  - curl -fsSL https://dropstone.io/install | bash
  - echo "正在安装 glab"
  - export GITLAB_TOKEN=$GITLAB_TOKEN_DROPSTONE
  - 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 "正在创建 Dropstone 身份验证配置"
  - mkdir --parents ~/.local/share/dropstone
  - |
    cat > ~/.local/share/dropstone/auth.json << EOF
    {
      "dropstone": {
        "type": "api",
        "key": "$DROPSTONE_API_KEY"
      }
    }
    EOF
  - echo "正在配置 git"
  - git config --global user.email "dropstone@gitlab.com"
  - git config --global user.name "Dropstone"
  - echo "正在测试 glab"
  - glab issue list
  - echo "正在运行 Dropstone"
  - |
    dropstone run "
    您是一个帮助处理 GitLab 操作的 AI 助手。

    上下文:$AI_FLOW_CONTEXT
    任务:$AI_FLOW_INPUT
    事件:$AI_FLOW_EVENT

    请使用可用的 GitLab 工具执行请求的任务。
    请进行彻底分析并提供清晰的解释。

    使用 glab CLI 访问 GitLab 中的数据。glab CLI 已经过身份验证。

    如果要求您总结 MR 或问题,或提供更多信息,
    请将备注发布回 MR/问题,以便用户查看。
    "
  - git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
  - echo "检查 git 更改并推送(如有)"
  - |
    if ! git diff --quiet || ! git diff --cached --quiet || [ -n "$(git ls-files --others --exclude-standard)" ]; then
      echo "检测到 git 更改,正在添加并推送..."
      git add .
      if git diff --cached --quiet; then
        echo "没有暂存的更改可提交"
      else
        echo "正在提交更改到分支:$CI_WORKLOAD_REF"
        git commit --message "Dropstone 更改"
        echo "正在推送更改到 $CI_WORKLOAD_REF"
        git push "https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/$CI_PROJECT_PATH.git" $CI_WORKLOAD_REF
        echo "更改已成功推送"
      fi
    else
      echo "未检测到 git 更改,跳过推送"
    fi
variables:
  - DROPSTONE_API_KEY
  - GITLAB_TOKEN_DROPSTONE
  - GITLAB_HOST

您可以参考 GitLab Duo Agent Platform 文档 获取详细说明。


示例

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

Tip

您可以配置不同于 @dropstone 的触发短语。

  • 解释问题

    在 GitLab 问题中添加此评论。

    @dropstone 解释这个问题
    

    Dropstone 将阅读该问题并回复清晰的解释。

  • 修复问题

    在 GitLab 问题中,输入:

    @dropstone 修复这个
    

    Dropstone 将创建新分支,实现更改,并提交包含更改的合并请求。

  • 审查合并请求

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

    @dropstone 审查这个合并请求
    

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

Ctrl+I