forked from Gitlink/gitlink-cli
9.5 KiB
9.5 KiB
gitlink-cli webhook +info
查看指定 Webhook 的详细信息。
命令格式
gitlink-cli webhook +info [--owner OWNER] [--repo REPO] --id WEBHOOK_ID
参数说明
| 参数 | 短参数 | 说明 | 是否必须 | 默认值 |
|---|---|---|---|---|
--owner |
-o |
仓库所有者 | 否 | 自动从 git remote 解析 |
--repo |
-r |
仓库名称 | 否 | 自动从 git remote 解析 |
--id |
-i |
Webhook ID | 是 | - |
返回值
成功返回
{
"ok": true,
"data": {
"id": "456",
"hook_url": "https://ci.example.com/webhook",
"events": ["push", "pull_request", "issue"],
"is_active": true,
"content_type": "json",
"description": "CI/CD automation webhook",
"project": {
"owner": "myuser",
"repo": "myrepo",
"identifier": "myuser/myrepo"
},
"created_at": "2024-01-01T00:00:00Z",
"updated_at": "2024-01-15T12:30:00Z",
"last_delivery": {
"timestamp": "2024-01-15T14:25:00Z",
"status": "success",
"event": "push",
"duration_ms": 245
},
"delivery_statistics": {
"total_deliveries": 1523,
"successful_deliveries": 1498,
"failed_deliveries": 25,
"success_rate": 98.36
}
},
"meta": {
"identity": "user:myuser"
}
}
错误返回
{
"ok": false,
"error": {
"code": 404,
"message": "Webhook not found",
"suggestion": "Please check the webhook ID"
}
}
使用示例
基本用法
# 查看 Webhook 详情
gitlink-cli webhook +info --owner myuser --repo myrepo --id 456
# 在 git 仓库目录中查看(自动解析 owner/repo)
gitlink-cli webhook +info --id 456
# 使用短参数
gitlink-cli webhook +info -i 456
不同输出格式
# JSON 格式(默认,便于解析)
gitlink-cli webhook +info --id 456 --format json
# Table 格式(更易阅读)
gitlink-cli webhook +info --id 456 --format table
# YAML 格式
gitlink-cli webhook +info --id 456 --format yaml
提取特定信息
# 使用 jq 提取 Webhook URL
gitlink-cli webhook +info --id 456 --format json | jq -r '.data.hook_url'
# 查看 Webhook 是否激活
gitlink-cli webhook +info --id 456 --format json | jq -r '.data.is_active'
# 查看监听的事件类型
gitlink-cli webhook +info --id 456 --format json | jq -r '.data.events[]'
# 查看统计信息
gitlink-cli webhook +info --id 456 --format json | jq '.data.delivery_statistics'
比较两个 Webhook
# 比较两个 Webhook 的配置
echo "=== Webhook 456 ==="
gitlink-cli webhook +info --id 456
echo "=== Webhook 789 ==="
gitlink-cli webhook +info --id 789
错误处理
常见错误
1. Webhook 不存在
Error: [404] Webhook not found
原因: 指定的 Webhook ID 不存在 解决方案:
# 先列出所有 Webhook 找到正确 ID
gitlink-cli webhook +list
2. 权限不足
Error: [403] You don't have permission to view webhook details
原因: 用户没有仓库访问权限 解决方案: 确认您是仓库成员
3. ID 参数缺失
Error: required flag --id is missing
原因: 没有提供 Webhook ID 解决方案: 指定要查看的 Webhook ID
最佳实践
1. 更新前查看
# 更新 Webhook 前先查看当前配置
WEBHOOK_ID=456
echo "Current configuration:"
gitlink-cli webhook +info --id $WEBHOOK_ID
# 然后进行更新
gitlink-cli webhook +update --id $WEBHOOK_ID --url $NEW_URL
2. 批量查看 Webhook 信息
# 查看所有 Webhook 的简要信息
for id in $(gitlink-cli webhook +list --format json | jq -r '.data.webhooks[].id'); do
echo "=== Webhook $id ==="
gitlink-cli webhook +info --id $WEBHOOK_ID --format json | jq -r '.data | "\(.hook_url) - \(.description)"'
done
3. 验证 Webhook 配置
# 检查 Webhook 是否正确配置
check_webhook_config() {
WEBHOOK_ID=$1
# 获取 Webhook 信息
info=$(gitlink-cli webhook +info --id $WEBHOOK_ID --format json)
# 检查是否激活
is_active=$(echo $info | jq -r '.data.is_active')
if [ "$is_active" != "true" ]; then
echo "WARNING: Webhook is not active"
fi
# 检查是否有事件
events=$(echo $info | jq -r '.data.events | length')
if [ "$events" -eq 0 ]; then
echo "WARNING: No events configured"
fi
# 检查 URL 是否有效
url=$(echo $info | jq -r '.data.hook_url')
if [[ ! $url =~ ^https:// ]]; then
echo "WARNING: URL does not use HTTPS"
fi
# 显示成功率
success_rate=$(echo $info | jq -r '.data.delivery_statistics.success_rate')
echo "Success rate: $success_rate%"
}
AI Agent 使用建议
自动化 Webhook 配置检查
# AI Agent 检查 Webhook 配置的自动化脚本
analyze_webhook() {
WEBHOOK_ID=$1
OUTPUT_FORMAT="${2:-json}"
info=$(gitlink-cli webhook +info --id $WEBHOOK_ID --format $OUTPUT_FORMAT)
if [ "$OUTPUT_FORMAT" = "json" ]; then
# JSON 格式便于解析
echo "$info" | jq '.data | {
id,
url: .hook_url,
active: .is_active,
events: .events,
success_rate: .delivery_statistics.success_rate,
last_delivery: .last_delivery.timestamp
}'
else
# 其他格式直接输出
echo "$info"
fi
}
# 批量分析所有 Webhook
for id in $(gitlink-cli webhook +list --format json | jq -r '.data.webhooks[].id'); do
analyze_webhook $id
done
Webhook 健康检查
# 检查 Webhook 健康状态
check_webhook_health() {
WEBHOOK_ID=$1
info=$(gitlink-cli webhook +info --id $WEBHOOK_ID --format json)
# 提取关键指标
is_active=$(echo $info | jq -r '.data.is_active')
success_rate=$(echo $info | jq -r '.data.delivery_statistics.success_rate')
last_delivery=$(echo $info | jq -r '.data.last_delivery.timestamp')
# 健康评分
health_score=100
issues=()
if [ "$is_active" != "true" ]; then
health_score=$((health_score - 50))
issues+=("Webhook is not active")
fi
if (( $(echo "$success_rate < 95" | bc -l) )); then
health_score=$((health_score - 30))
issues+=("Success rate below 95%: $success_rate%")
fi
if [ -z "$last_delivery" ] || [ "$last_delivery" = "null" ]; then
health_score=$((health_score - 20))
issues+=("No recent deliveries")
fi
# 输出结果
echo "Webhook $WEBHOOK_ID Health Check"
echo "Health Score: $health_score/100"
if [ ${#issues[@]} -gt 0 ]; then
echo "Issues found:"
printf '%s\n' "${issues[@]}"
else
echo "✓ Webhook is healthy"
fi
}
配置差异分析
# 比较两个 Webhook 的配置差异
compare_webhooks() {
ID1=$1
ID2=$2
info1=$(gitlink-cli webhook +info --id $ID1 --format json)
info2=$(gitlink-cli webhook +info --id $ID2 --format json)
echo "=== Webhook Comparison ==="
echo "Webhook 1: $ID1"
echo "Webhook 2: $ID2"
echo
# 比较 URL
url1=$(echo $info1 | jq -r '.data.hook_url')
url2=$(echo $info2 | jq -r '.data.hook_url')
echo "URL:"
echo " $ID1: $url1"
echo " $ID2: $url2"
[ "$url1" = "$url2" ] && echo " Status: Same" || echo " Status: Different"
echo
# 比较事件
events1=$(echo $info1 | jq -r '.data.events | sort | join(",")')
events2=$(echo $info2 | jq -r '.data.events | sort | join(",")')
echo "Events:"
echo " $ID1: $events1"
echo " $ID2: $events2"
[ "$events1" = "$events2" ] && echo " Status: Same" || echo " Status: Different"
echo
# 比较激活状态
active1=$(echo $info1 | jq -r '.data.is_active')
active2=$(echo $info2 | jq -r '.data.is_active')
echo "Active Status:"
echo " $ID1: $active1"
echo " $ID2: $active2"
[ "$active1" = "$active2" ] && echo " Status: Same" || echo " Status: Different"
}
注意事项
- 权限要求: 至少需要仓库读取权限
- 详细信息: 包含 Webhook 的所有配置和统计信息
- 统计数据: 部分统计信息可能为空,特别是新创建的 Webhook
- 时间格式: 所有时间戳均为 ISO 8601 格式(UTC)
- 敏感信息: 输出可能包含敏感信息,注意保护
常见使用场景
场景1: 确认 Webhook 配置
# 确认 Webhook 配置是否正确
gitlink-cli webhook +info --id 456
# 检查关键配置
gitlink-cli webhook +info --id 456 --format json | jq -r '{
url: .data.hook_url,
events: .data.events,
active: .data.is_active,
success_rate: .data.delivery_statistics.success_rate
}'
场景2: 故障排查
# Webhook 出问题时查看详细信息
gitlink-cli webhook +info --id 456
# 检查最近一次投递情况
gitlink-cli webhook +info --id 456 --format json | jq '.data.last_delivery'
# 查看失败统计
gitlink-cli webhook +info --id 456 --format json | jq '.data.delivery_statistics'
场景3: 配置审计
# 审计所有 Webhook 配置
echo "=== Webhook Configuration Audit ==="
for id in $(gitlink-cli webhook +list --format json | jq -r '.data.webhooks[].id'); do
echo "Webhook $id:"
gitlink-cli webhook +info --id $id --format json | jq -r '{
url: .data.hook_url,
events: .data.events | join(","),
active: .data.is_active,
description: .description
}'
echo
done
相关命令
webhook +list- 列出所有 Webhookwebhook +create- 创建新 Webhookwebhook +update- 更新 Webhook 配置webhook +test- 测试 Webhook