Dropstone CLI

GitLab

GitLabのIssueやマージリクエストで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. Dropstone認証JSONを、設定 > CI/CD > 変数の下にあるファイルタイプのCI環境変数として保存します。必ず「マスクおよび非表示」にマークしてください。

  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パイプライン内でタスクを実行します。


機能

  • Issueのトリアージ: DropstoneにIssueを調査して説明するよう依頼できます。
  • 修正と実装: DropstoneにIssueの修正や機能の実装を依頼できます。 新しいブランチを作成し、変更内容を含むマージリクエストを起票します。
  • セキュア: 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 "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を使用する方法の例をいくつか示します。

Tip

@dropstone以外のトリガーフレーズを設定することもできます。

  • Issueの説明

    GitLabのIssueにこのコメントを追加します。

    @dropstone explain this issue
    

    DropstoneがIssueを読み取り、明確な説明を返信します。

  • Issueの修正

    GitLabのIssueで、次のように入力します:

    @dropstone fix this
    

    Dropstoneが新しいブランチを作成し、変更を実装して、変更内容を含むマージリクエストを開きます。

  • マージリクエストのレビュー

    GitLabのマージリクエストに次のコメントを残します。

    @dropstone review this merge request
    

    Dropstoneがマージリクエストをレビューし、フィードバックを提供します。

Ctrl+I