283 lines
6.8 KiB
Markdown
283 lines
6.8 KiB
Markdown
# gitlink-cli webhook +delete
|
||
|
||
删除指定的 Webhook。
|
||
|
||
## 命令格式
|
||
|
||
```bash
|
||
gitlink-cli webhook +delete [--owner OWNER] [--repo REPO] --id WEBHOOK_ID
|
||
```
|
||
|
||
## 参数说明
|
||
|
||
| 参数 | 短参数 | 说明 | 是否必须 | 默认值 |
|
||
|------|--------|------|----------|--------|
|
||
| `--owner` | `-o` | 仓库所有者 | 否 | 自动从 git remote 解析 |
|
||
| `--repo` | `-r` | 仓库名称 | 否 | 自动从 git remote 解析 |
|
||
| `--id` | `-i` | Webhook ID | **是** | - |
|
||
|
||
## 返回值
|
||
|
||
### 成功返回
|
||
```json
|
||
{
|
||
"ok": true,
|
||
"data": {
|
||
"message": "Webhook deleted successfully"
|
||
},
|
||
"meta": {
|
||
"identity": "user:myuser"
|
||
}
|
||
}
|
||
```
|
||
|
||
### 错误返回
|
||
```json
|
||
{
|
||
"ok": false,
|
||
"error": {
|
||
"code": 404,
|
||
"message": "Webhook not found",
|
||
"suggestion": "Please check the webhook ID"
|
||
}
|
||
}
|
||
```
|
||
|
||
## 使用示例
|
||
|
||
### 基本用法
|
||
```bash
|
||
# 删除指定 Webhook
|
||
gitlink-cli webhook +delete --owner myuser --repo myrepo --id 456
|
||
|
||
# 在 git 仓库目录中删除(自动解析 owner/repo)
|
||
gitlink-cli webhook +delete --id 456
|
||
|
||
# 使用短参数
|
||
gitlink-cli webhook +delete -i 456
|
||
```
|
||
|
||
### 删除多个 Webhook
|
||
```bash
|
||
# 批量删除多个 Webhook
|
||
for id in 123 456 789; do
|
||
gitlink-cli webhook +delete --id $id
|
||
done
|
||
```
|
||
|
||
### 交互式删除
|
||
```bash
|
||
# 先查看 Webhook 详情确认
|
||
gitlink-cli webhook +info --id 456
|
||
|
||
# 确认后删除
|
||
gitlink-cli webhook +delete --id 456
|
||
```
|
||
|
||
## 错误处理
|
||
|
||
### 常见错误
|
||
|
||
#### 1. Webhook 不存在
|
||
```bash
|
||
Error: [404] Webhook not found
|
||
```
|
||
**原因**: 指定的 Webhook ID 不存在或已被删除
|
||
**解决方案**:
|
||
```bash
|
||
# 先列出所有 Webhook 确认 ID
|
||
gitlink-cli webhook +list
|
||
```
|
||
|
||
#### 2. 权限不足
|
||
```bash
|
||
Error: [403] You don't have permission to delete webhooks
|
||
```
|
||
**原因**: 用户不是仓库管理员
|
||
**解决方案**: 确认您有仓库管理员权限
|
||
|
||
#### 3. ID 参数缺失
|
||
```bash
|
||
Error: required flag --id is missing
|
||
```
|
||
**原因**: 没有提供 Webhook ID
|
||
**解决方案**: 指定要删除的 Webhook ID
|
||
|
||
## 最佳实践
|
||
|
||
### 1. 删除前确认
|
||
```bash
|
||
# 删除前先查看 Webhook 详情
|
||
WEBHOOK_ID=456
|
||
echo "About to delete webhook:"
|
||
gitlink-cli webhook +info --id $WEBHOOK_ID
|
||
|
||
# 确认后删除
|
||
read -p "Confirm deletion? (y/n) " -n 1 -r
|
||
echo
|
||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||
gitlink-cli webhook +delete --id $WEBHOOK_ID
|
||
fi
|
||
```
|
||
|
||
### 2. 记录删除的 Webhook
|
||
```bash
|
||
# 删除前记录 Webhook 配置
|
||
WEBHOOK_ID=456
|
||
BACKUP_FILE="webhook_backup_$WEBHOOK_ID.json"
|
||
gitlink-cli webhook +info --id $WEBHOOK_ID --format json > $BACKUP_FILE
|
||
echo "Webhook config backed up to $BACKUP_FILE"
|
||
|
||
# 然后删除
|
||
gitlink-cli webhook +delete --id $WEBHOOK_ID
|
||
```
|
||
|
||
### 3. 批量清理不活跃的 Webhook
|
||
```bash
|
||
# 列出所有不活跃的 Webhook 并删除
|
||
inactive_webhooks=$(gitlink-cli webhook +list --format json | jq -r '.data.webhooks[] | select(.is_active == false) | .id')
|
||
for id in $inactive_webhooks; do
|
||
echo "Deleting inactive webhook: $id"
|
||
gitlink-cli webhook +delete --id $id
|
||
done
|
||
```
|
||
|
||
## AI Agent 使用建议
|
||
|
||
### 安全删除流程
|
||
```bash
|
||
# AI Agent 删除 Webhook 的安全流程
|
||
delete_webhook_safely() {
|
||
WEBHOOK_ID=$1
|
||
|
||
# 1. 检查 Webhook 是否存在
|
||
if ! gitlink-cli webhook +info --id $WEBHOOK_ID --format json >/dev/null 2>&1; then
|
||
echo "Webhook $WEBHOOK_ID not found"
|
||
return 1
|
||
fi
|
||
|
||
# 2. 备份配置
|
||
gitlink-cli webhook +info --id $WEBHOOK_ID --format json > "webhook_backup_$WEBHOOK_ID.json"
|
||
|
||
# 3. 删除 Webhook
|
||
if gitlink-cli webhook +delete --id $WEBHOOK_ID; then
|
||
echo "Webhook $WEBHOOK_ID deleted successfully"
|
||
return 0
|
||
else
|
||
echo "Failed to delete webhook $WEBHOOK_ID"
|
||
return 1
|
||
fi
|
||
}
|
||
```
|
||
|
||
### 批量删除 Webhook
|
||
```bash
|
||
# 删除所有匹配特定条件的 Webhook
|
||
delete_webhooks_by_url() {
|
||
URL_PATTERN=$1
|
||
|
||
# 找到匹配的 Webhook
|
||
webhook_ids=$(gitlink-cli webhook +list --format json | \
|
||
jq -r ".data.webhooks[] | select(.hook_url | contains(\"$URL_PATTERN\")) | .id")
|
||
|
||
# 逐个删除
|
||
for id in $webhook_ids; do
|
||
echo "Deleting webhook $id with URL matching $URL_PATTERN"
|
||
gitlink-cli webhook +delete --id $id
|
||
done
|
||
}
|
||
|
||
# 使用示例:删除所有指向旧服务器的 Webhook
|
||
delete_webhooks_by_url "old-server.example.com"
|
||
```
|
||
|
||
### 验证删除
|
||
```bash
|
||
# 删除 Webhook 并验证
|
||
WEBHOOK_ID=456
|
||
|
||
# 删除前检查
|
||
if gitlink-cli webhook +info --id $WEBHOOK_ID >/dev/null 2>&1; then
|
||
echo "Webhook exists, deleting..."
|
||
gitlink-cli webhook +delete --id $WEBHOOK_ID
|
||
|
||
# 验证删除成功
|
||
if ! gitlink-cli webhook +info --id $WEBHOOK_ID >/dev/null 2>&1; then
|
||
echo "Webhook deleted successfully"
|
||
else
|
||
echo "Webhook still exists after deletion"
|
||
fi
|
||
else
|
||
echo "Webhook not found"
|
||
fi
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
1. **不可恢复**: 删除操作不可逆,请谨慎操作
|
||
2. **立即生效**: 删除后立即停止接收事件
|
||
3. **权限要求**: 需要仓库管理员权限
|
||
4. **API 特性**: GitLink API 在删除时可能返回错误信息,但实际删除成功
|
||
5. **验证删除**: 建议删除后验证 Webhook 是否已删除
|
||
|
||
## 常见使用场景
|
||
|
||
### 场景1: 清理测试 Webhook
|
||
```bash
|
||
# 删除所有测试环境的 Webhook
|
||
test_webhooks=$(gitlink-cli webhook +list --format json | \
|
||
jq -r '.data.webhooks[] | select(.description | contains("test")) | .id')
|
||
|
||
for id in $test_webhooks; do
|
||
echo "Deleting test webhook: $id"
|
||
gitlink-cli webhook +delete --id $id
|
||
done
|
||
```
|
||
|
||
### 场景2: 迁移到新 URL
|
||
```bash
|
||
# 迁移 Webhook 到新 URL
|
||
OLD_WEBHOOK_ID=456
|
||
OLD_URL=$(gitlink-cli webhook +info --id $OLD_WEBHOOK_ID --format json | jq -r '.data.hook_url')
|
||
NEW_URL="https://new-server.example.com/webhook"
|
||
|
||
# 创建新 Webhook
|
||
NEW_WEBHOOK_ID=$(gitlink-cli webhook +create --url $NEW_URL --events push --format json | jq -r '.data.id')
|
||
|
||
# 测试新 Webhook
|
||
gitlink-cli webhook +test --id $NEW_WEBHOOK_ID
|
||
|
||
# 确认新 Webhook 工作后删除旧 Webhook
|
||
gitlink-cli webhook +delete --id $OLD_WEBHOOK_ID
|
||
```
|
||
|
||
### 场景3: 批量重构 Webhook
|
||
```bash
|
||
# 重构所有 Webhook,重新创建后删除旧的
|
||
# 1. 备份现有配置
|
||
gitlink-cli webhook +list --format json > webhook_config_backup.json
|
||
|
||
# 2. 根据备份创建新配置(可能使用不同的 URL 或事件)
|
||
|
||
# 3. 删除旧的 Webhook
|
||
old_ids=$(jq -r '.data.webhooks[].id' webhook_config_backup.json)
|
||
for id in $old_ids; do
|
||
gitlink-cli webhook +delete --id $id
|
||
done
|
||
```
|
||
|
||
## 安全建议
|
||
|
||
1. **删除前备份**: 删除前备份 Webhook 配置
|
||
2. **确认操作**: 删除前确认 Webhook ID 和配置
|
||
3. **逐步删除**: 批量删除时逐步进行,避免误删
|
||
4. **验证删除**: 删除后验证 Webhook 已被删除
|
||
5. **权限控制**: 限制删除权限给授权用户
|
||
|
||
## 相关命令
|
||
|
||
- `webhook +list` - 列出所有 Webhook
|
||
- `webhook +info` - 查看 Webhook 详情
|
||
- `webhook +create` - 创建新 Webhook
|
||
- `webhook +update` - 更新 Webhook(可以先用 `--active false` 停用)
|