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コンポーネントは、動作をカスタマイズするための複数の入力をサポートしています。
セットアップ
-
Dropstone認証JSONを、設定 > CI/CD > 変数の下にあるファイルタイプのCI環境変数として保存します。必ず「マスクおよび非表示」にマークしてください。
-
.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ドキュメントを確認してください。
- GitLab環境を設定する
- CI/CDをセットアップする
- Dropstone APIキーを取得する(クイックスタートを参照)
- サービスアカウントを作成する
- CI/CD変数を設定する
- フロー設定ファイルを作成する。例:
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 issueDropstoneがIssueを読み取り、明確な説明を返信します。
-
Issueの修正
GitLabのIssueで、次のように入力します:
@dropstone fix thisDropstoneが新しいブランチを作成し、変更を実装して、変更内容を含むマージリクエストを開きます。
-
マージリクエストのレビュー
GitLabのマージリクエストに次のコメントを残します。
@dropstone review this merge requestDropstoneがマージリクエストをレビューし、フィードバックを提供します。