gitlink-cli/skills/gitlink-webhook/references/webhook-info.md

383 lines
9.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# gitlink-cli webhook +info
查看指定 Webhook 的详细信息。
## 命令格式
```bash
gitlink-cli webhook +info [--owner OWNER] [--repo REPO] --id WEBHOOK_ID
```
## 参数说明
| 参数 | 短参数 | 说明 | 是否必须 | 默认值 |
|------|--------|------|----------|--------|
| `--owner` | `-o` | 仓库所有者 | 否 | 自动从 git remote 解析 |
| `--repo` | `-r` | 仓库名称 | 否 | 自动从 git remote 解析 |
| `--id` | `-i` | Webhook ID | **是** | - |
## 返回值
### 成功返回
```json
{
"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"
}
}
```
### 错误返回
```json
{
"ok": false,
"error": {
"code": 404,
"message": "Webhook not found",
"suggestion": "Please check the webhook ID"
}
}
```
## 使用示例
### 基本用法
```bash
# 查看 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
```
### 不同输出格式
```bash
# 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
```
### 提取特定信息
```bash
# 使用 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
```bash
# 比较两个 Webhook 的配置
echo "=== Webhook 456 ==="
gitlink-cli webhook +info --id 456
echo "=== Webhook 789 ==="
gitlink-cli webhook +info --id 789
```
## 错误处理
### 常见错误
#### 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 view webhook details
```
**原因**: 用户没有仓库访问权限
**解决方案**: 确认您是仓库成员
#### 3. ID 参数缺失
```bash
Error: required flag --id is missing
```
**原因**: 没有提供 Webhook ID
**解决方案**: 指定要查看的 Webhook ID
## 最佳实践
### 1. 更新前查看
```bash
# 更新 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 信息
```bash
# 查看所有 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 配置
```bash
# 检查 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 配置检查
```bash
# 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 健康检查
```bash
# 检查 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
}
```
### 配置差异分析
```bash
# 比较两个 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"
}
```
## 注意事项
1. **权限要求**: 至少需要仓库读取权限
2. **详细信息**: 包含 Webhook 的所有配置和统计信息
3. **统计数据**: 部分统计信息可能为空,特别是新创建的 Webhook
4. **时间格式**: 所有时间戳均为 ISO 8601 格式UTC
5. **敏感信息**: 输出可能包含敏感信息,注意保护
## 常见使用场景
### 场景1: 确认 Webhook 配置
```bash
# 确认 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: 故障排查
```bash
# 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: 配置审计
```bash
# 审计所有 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` - 列出所有 Webhook
- `webhook +create` - 创建新 Webhook
- `webhook +update` - 更新 Webhook 配置
- `webhook +test` - 测试 Webhook