Dropstone Docs

GitLab

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

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

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


GitLab CI

Dropstone 可在常规 GitLab 管道中工作。您可以将其作为 CI 组件 构建到管道中。

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


功能

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

设置

  1. Settings > CI/CD > Variables 下将您的 Dropstone 身份验证 JSON 存储为文件类型 CI 环境变量。确保将其标记为"Masked and hidden"。

  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 管道中运行,以下是设置所需的内容:

提示:

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

  1. 配置您的 GitLab 环境
  2. 设置 CI/CD
  3. 获取 Dropstone API 密钥(参见 快速开始
  4. 创建服务账户
  5. 配置 CI/CD 变量
  6. 创建流配置文件。示例:
image: node:22-slim
commands:
  - echo "Installing Dropstone"
  - curl -fsSL https://dropstone.io/install | bash
  - echo "Installing 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 "Configuring glab"
  - echo $GITLAB_HOST
  - echo "Creating Dropstone auth configuration"
  - mkdir --parents ~/.local/share/dropstone
  - |
    cat > ~/.local/share/dropstone/auth.json << EOF
    {
      "dropstone": {
        "type": "api",
        "key": "$DROPSTONE_API_KEY"
      }
    }
    EOF
  - echo "Configuring git"
  - git config --global user.email "dropstone@gitlab.com"
  - git config --global user.name "Dropstone"
  - echo "Testing glab"
  - glab issue list
  - echo "Running Dropstone"
  - |
    dropstone 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.

    Use the glab CLI to access data from GitLab. The glab CLI is already authenticated.

    If you are asked to summarize an MR or issue, or provide more information,
    post back a note to the MR/Issue so the user can see it.
    "
  - 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 || [ -n "$(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 "Dropstone changes"
        echo "Pushing changes up to $CI_WORKLOAD_REF"
        git push "https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/$CI_PROJECT_PATH.git" $CI_WORKLOAD_REF
        echo "Changes successfully pushed"
      fi
    else
      echo "No git changes detected, skipping push"
    fi
variables:
  - DROPSTONE_API_KEY
  - GITLAB_TOKEN_DROPSTONE
  - GITLAB_HOST

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


示例

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

提示:

您可以配置不同的触发短语而不是 @dropstone

  • 解释问题

    在 GitLab 问题中添加此评论。

    @dropstone explain this issue
    

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

  • 修复问题

    在 GitLab 问题中,说:

    @dropstone fix this
    

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

  • 审查合并请求

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

    @dropstone review this merge request
    

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

Ctrl+I