Dropstone CLI

GitLab

Используйте Dropstone в задачах и merge request'ах GitLab.

Dropstone интегрируется с вашим рабочим процессом GitLab через конвейер GitLab CI/CD или с помощью GitLab Duo.

В обоих случаях Dropstone будет работать на ваших раннерах GitLab.


GitLab CI

Dropstone работает в обычном конвейере GitLab. Вы можете встроить его в конвейер как компонент CI.

Здесь мы используем компонент CI/CD для Dropstone, созданный сообществом: nagyv/gitlab-dropstone.


Возможности

  • Индивидуальная конфигурация для каждой задачи: Настройте Dropstone с помощью пользовательского каталога конфигурации, например ./config/#custom-directory, чтобы включать или отключать функциональность для каждого вызова Dropstone.
  • Минимальная настройка: Компонент CI настраивает Dropstone в фоновом режиме, вам нужно только создать конфигурацию Dropstone и начальный промпт.
  • Гибкость: Компонент CI поддерживает несколько входных параметров для настройки его поведения.

Настройка

  1. Сохраните ваш JSON-файл аутентификации Dropstone как переменную окружения CI типа File в разделе Settings > CI/CD > Variables. Убедитесь, что они помечены как "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 # Имя переменной для вашего JSON-файла аутентификации Dropstone
          command: optional-custom-command
          message: "Ваш промпт здесь"
    

Для получения дополнительных входных параметров и примеров использования ознакомьтесь с документацией этого компонента.


GitLab Duo

Dropstone интегрируется с вашим рабочим процессом GitLab. Упомяните @dropstone в комментарии, и Dropstone выполнит задачи в вашем конвейере GitLab CI.


Возможности

  • Триаж задач: Попросите Dropstone изучить задачу и объяснить её вам.
  • Исправление и реализация: Попросите Dropstone исправить задачу или реализовать функцию. Он создаст новую ветку и откроет merge request с изменениями.
  • Безопасность: Dropstone работает на ваших раннерах GitLab.

Настройка

Dropstone работает в вашем конвейере GitLab CI/CD. Вот что вам понадобится для его настройки:

Tip

Ознакомьтесь с документацией GitLab для актуальных инструкций.

  1. Настройте ваше окружение GitLab
  2. Настройте CI/CD
  3. Получите API-ключ Dropstone (см. Quickstart)
  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 за подробными инструкциями.


Примеры

Вот несколько примеров того, как вы можете использовать Dropstone в GitLab.

Tip

Вы можете настроить другую триггерную фразу вместо @dropstone.

  • Объяснение задачи

    Добавьте этот комментарий в задачу GitLab.

    @dropstone explain this issue
    

    Dropstone прочитает задачу и ответит понятным объяснением.

  • Исправление задачи

    В задаче GitLab напишите:

    @dropstone fix this
    

    Dropstone создаст новую ветку, реализует изменения и откроет merge request с изменениями.

  • Ревью merge request'ов

    Оставьте следующий комментарий на merge request в GitLab.

    @dropstone review this merge request
    

    Dropstone проведёт ревью merge request'а и предоставит обратную связь.

Ctrl+I