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 组件支持多种输入,用于自定义其行为。
设置
-
将您的 Dropstone 身份验证 JSON 存储为文件类型的 CI 环境变量,路径为 设置 > CI/CD > 变量。请确保将其标记为“掩码和隐藏”。
-
将以下内容添加到您的
.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 文档 获取最新说明。
- 配置您的 GitLab 环境
- 设置 CI/CD
- 获取 Dropstone API 密钥(请参阅 快速入门)
- 创建服务账户
- 配置 CI/CD 变量
- 创建流程配置文件。示例:
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 将审查合并请求并提供反馈。