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

9.5 KiB
Raw Blame History

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"
}

注意事项

  1. 权限要求: 至少需要仓库读取权限
  2. 详细信息: 包含 Webhook 的所有配置和统计信息
  3. 统计数据: 部分统计信息可能为空,特别是新创建的 Webhook
  4. 时间格式: 所有时间戳均为 ISO 8601 格式UTC
  5. 敏感信息: 输出可能包含敏感信息,注意保护

常见使用场景

场景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 - 列出所有 Webhook
  • webhook +create - 创建新 Webhook
  • webhook +update - 更新 Webhook 配置
  • webhook +test - 测试 Webhook