Incoming Webhooks
Incoming webhooks 允许你通过 HTTP POST 请求直接触发 pipeline,而无需 Git 事件。
目录
概述配置 Incoming Webhook通过 Incoming Webhook 触发 PipelineIncoming Webhook Payload自定义参数安全注意事项排查 Incoming Webhooks 问题最佳实践1. PipelineRun 管理2. 监控3. Incoming Webhooks故障排查未创建 PipelineRunPipelineRun 未运行未报告状态下一步概述
Incoming webhooks 提供了一种方式来:
- 从外部系统触发 pipeline
- 与不使用 Git 的 CI/CD 工具集成
- 手动或通过 API 调用触发 pipeline
- 支持自定义 payload 和 参数
- HTTP POST 请求:向 PAC controller 的
/incomingendpoint 发送 POST 请求 - 认证:PAC 使用 secret(来自 header 或 query parameter)验证请求
- Repository 查找:PAC 根据 repository 名称和 namespace 查找 Repository CR
- Pipeline 触发:PAC 处理 payload 并触发匹配的 pipeline,类似于 Git webhook events
- PipelineRun 创建:PAC 根据 payload 和 pipeline definitions 创建 PipelineRuns
与 Git webhooks 的主要区别:
- 不涉及 Git provider - 直接 HTTP 请求
- 自定义 payload 格式 - 由你控制结构
- 无需实际 Git commits 也可以触发 pipeline
- 适用于外部集成和手动触发
配置 Incoming Webhook
-
在 Repository CR 中启用:向 Repository CR 添加 incoming webhook 配置:
-
创建 incoming webhook secret:
-
获取 incoming webhook URL:
Incoming webhook endpoint 为:
URL 参数(可选,也可通过 headers 传递):
repository:Repository CR 名称namespace:Repository CR 所在的 Namespacesecret:Incoming webhook secret 值
带 query parameters 的示例:
带 headers 的示例(推荐用于安全性):
使用 headers:X-Repository、X-Namespace、X-Secret
使用 headers(X-Repository、X-Namespace、X-Secret)而不是 query parameters,以避免在 URL 和日志中暴露 secret。
通过 Incoming Webhook 触发 Pipeline
向 incoming webhook endpoint 发送 POST 请求:
Incoming Webhook Payload
Incoming webhook 接受具有以下结构的 JSON payload:
自定义参数
你可以在 webhook payload 中传递自定义参数:
这些参数可在你的 pipeline 中通过 $(params.environment) 和 $(params.deploy) 访问。
安全注意事项
- 使用 secret:始终使用 webhook secret 来验证请求
- HTTPS:在生产环境中为 webhook endpoint 使用 HTTPS
- 网络策略:限制对 incoming webhook endpoint 的访问
- 限流:实现限流以防止滥用
- 验证 payload:在处理前验证 incoming payload
排查 Incoming Webhooks 问题
-
检查 webhook URL:确认 URL 正确且可访问
-
验证 secret:确保请求中的 secret 与 Repository CR 中的 secret 一致
-
检查 PAC logs:
-
验证 Repository CR:确保 incoming webhook 配置正确
-
使用 curl 测试:使用 curl 测试 webhook endpoint
最佳实践
1. PipelineRun 管理
- 设置清理限制:使用
max-keep-runs防止积累 - 监控资源:关注 PipelineRuns 带来的资源使用情况
- 归档重要运行:在清理前导出重要的 PipelineRuns
2. 监控
- 使用 labels:为 PipelineRuns 添加 label,便于筛选
- 设置告警:为失败的 PipelineRuns 配置告警
- 定期审查:定期检查 PipelineRun 状态和 logs
3. Incoming Webhooks
- 保护 endpoint:始终使用 HTTPS 和 secret
- 验证 payload:验证 incoming webhook payload
- 记录用法:记录 webhook endpoint 和 payload 格式
- 充分测试:在生产使用前充分测试 webhook 触发
故障排查
未创建 PipelineRun
- 检查 webhook:确认 webhook 已配置并正在接收 events
- 查看 Repository CR:确保 Repository CR 配置正确
- 检查 PAC logs:查看 PAC controller logs 中的错误
- 验证 pipeline 文件:确保 repository 中存在 pipeline 定义文件
PipelineRun 未运行
- 检查状态:查看 PipelineRun 状态和 conditions
- 查看 logs:检查 PipelineRun 和 TaskRun logs
- 验证资源:确保集群资源充足
- 检查权限:验证 ServiceAccount 具有所需权限
未报告状态
- 验证 Git provider token:确保 token 具有所需 scopes
- 检查 PAC Watcher:验证 PAC Watcher 正在运行
- 查看 logs:检查 PAC Watcher logs 中的错误
- 测试连通性:确保 PAC 能够访问 Git provider API
下一步
- Trigger PAC Pipelines - 自动 events 和 comment commands
- Define PipelineRuns in Git - PipelineRun 文件和 trigger annotations
- Guides - Repository 设置指南
- Common Issues - 故障排查指南