Incoming Webhooks
Incoming webhooks 允许你通过 HTTP POST 请求直接触发 pipeline,而无需 Git 事件。
目录
概览配置 Incoming Webhook通过 Incoming Webhook 触发 PipelineIncoming Webhook Payload自定义参数安全注意事项Incoming Webhooks 故障排查最佳实践1. PipelineRun 管理2. 监控3. Incoming Webhooks故障排查PipelineRun 未创建PipelineRun 未运行状态未上报下一步概览
Incoming webhooks 提供以下能力:
- 从外部系统触发 pipeline
- 与不使用 Git 的 CI/CD 工具集成
- 通过手动方式或 API 调用触发 pipeline
- 支持自定义 payload 和参数
- HTTP POST 请求:向 PAC controller 的
/incoming端点发送 POST 请求 - 认证:PAC 使用 secret(来自 header 或 query parameter)验证请求
- Repository 查找:PAC 根据 repository name 和 namespace 查找 Repository CR
- Pipeline 触发:PAC 处理 payload 并触发匹配的 pipeline,类似于 Git webhook 事件
- PipelineRun 创建:PAC 根据 payload 和 pipeline definitions 创建 PipelineRun
与 Git webhooks 的主要区别:
- 不涉及 Git provider - 直接的 HTTP 请求
- 自定义 payload 格式 - 你可以控制结构
- 无需实际 Git commit 即可触发 pipeline
- 适用于外部集成和手动触发
配置 Incoming Webhook
-
在 Repository CR 中启用:向你的 Repository CR 添加 incoming webhook 配置:
-
创建 incoming webhook secret:
-
获取 incoming webhook URL:
incoming webhook 端点为:
URL 参数(可选,也可以通过 header 传递):
repository:Repository CR namenamespace:Repository CR 所在的 namespacesecret:Incoming webhook secret value
使用 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 端点发送 POST 请求:
Incoming Webhook Payload
incoming webhook 接受具有以下结构的 JSON payload:
自定义参数
你可以在 webhook payload 中传递自定义参数:
这些参数在你的 pipeline 中可作为 $(params.environment) 和 $(params.deploy) 使用。
安全注意事项
- 使用 secret:始终使用 webhook secret 来验证请求
- HTTPS:在生产环境中为 webhook 端点使用 HTTPS
- 网络策略:限制对 incoming webhook 端点的访问
- 速率限制:实施速率限制以防止滥用
- 验证 payload:在处理之前验证传入的 payload
Incoming Webhooks 故障排查
-
检查 webhook URL:确认 URL 正确且可访问
-
验证 secret:确保请求中的 secret 与 Repository CR 中的配置一致
-
检查 PAC logs:
-
验证 Repository CR:确保 incoming webhook 已正确配置
-
使用 curl 测试:使用 curl 测试 webhook 端点
最佳实践
1. PipelineRun 管理
- 设置清理限制:使用
max-keep-runs防止累积 - 监控资源:关注 PipelineRun 带来的资源使用情况
- 归档重要运行:在清理前导出重要的 PipelineRun
2. 监控
- 使用标签:为 PipelineRun 添加标签,便于筛选
- 设置告警:为失败的 PipelineRun 配置告警
- 定期检查:定期查看 PipelineRun 状态和日志
3. Incoming Webhooks
- 保护端点安全:始终使用 HTTPS 和 secret
- 验证 payload:验证 incoming webhook payload
- 记录使用方式:记录 webhook 端点和 payload 格式
- 充分测试:在生产使用前测试 webhook 触发
故障排查
PipelineRun 未创建
- 检查 webhook:确认 webhook 已配置并正在接收事件
- 查看 Repository CR:确保 Repository CR 配置正确
- 检查 PAC logs:查看 PAC controller 日志中的错误
- 验证 pipeline 文件:确保 repository 中存在 pipeline definition 文件
PipelineRun 未运行
- 检查状态:查看 PipelineRun 的状态和条件
- 查看日志:检查 PipelineRun 和 TaskRun 日志
- 验证资源:确保集群资源充足
- 检查权限:确认 ServiceAccount 具有所需权限
状态未上报
- 验证 Git provider token:确保 token 具有所需 scopes
- 检查 PAC Watcher:确认 PAC Watcher 正在运行
- 查看日志:检查 PAC Watcher 日志中的错误
- 测试连通性:确保 PAC 能够访问 Git provider API
下一步
- Trigger Pipelines - 了解不同的触发方式
- Maintain Pipeline Code - pipeline definition 指南
- Configure Repository - Repository 设置
- Common Issues - 故障排查指南