Incoming Webhooks
传入 webhook 允许您通过 HTTP POST 请求直接触发 pipeline,无需依赖 Git 事件。
目录
OverviewConfigure Incoming WebhookTrigger Pipeline via Incoming WebhookIncoming Webhook PayloadCustom ParametersSecurity ConsiderationsTroubleshooting Incoming WebhooksBest Practices1. PipelineRun 管理2. 监控3. 传入 WebhookTroubleshootingPipelineRun 未创建PipelineRun 未运行状态未报告Next StepsOverview
传入 webhook 提供了一种方式来:
- 从外部系统触发 pipeline
- 集成不使用 Git 的 CI/CD 工具
- 手动或通过 API 调用触发 pipeline
- 支持自定义负载和参数
How Incoming Webhooks Work
- HTTP POST 请求:向 PAC 控制器的
/incoming端点发送 POST 请求 - 身份验证:PAC 使用 secret(来自请求头或查询参数)验证请求
- 仓库查找:PAC 根据仓库名称和命名空间查找 Repository CR
- 触发 pipeline:PAC 处理负载并触发匹配的 pipeline,类似于 Git webhook 事件
- 创建 PipelineRun:PAC 根据负载和 pipeline 定义创建 PipelineRun
与 Git webhook 的主要区别:
- 无需 Git 提供者,直接通过 HTTP 请求
- 自定义负载格式,由您控制结构
- 可在无实际 Git 提交的情况下触发 pipeline
- 适用于外部集成和手动触发
Configure Incoming Webhook
-
在 Repository CR 中启用:向您的 Repository CR 添加传入 webhook 配置:
-
创建传入 webhook secret:
-
获取传入 webhook URL:
传入 webhook 端点为:
URL 参数(可选,也可通过请求头传递):
repository:Repository CR 名称namespace:Repository CR 所在命名空间secret:传入 webhook secret 值
带查询参数的示例:
带请求头的示例(推荐用于安全):
请求头:X-Repository、X-Namespace、X-Secret
Security Best Practice
使用请求头(X-Repository、X-Namespace、X-Secret)代替查询参数,避免在 URL 和日志中暴露 secret。
Trigger Pipeline via Incoming Webhook
向传入 webhook 端点发送 POST 请求:
Incoming Webhook Payload
传入 webhook 接受如下结构的 JSON 负载:
Custom Parameters
您可以在 webhook 负载中传递自定义参数:
这些参数可在您的 pipeline 中通过 $(params.environment) 和 $(params.deploy) 使用。
Security Considerations
- 使用 secret:始终使用 webhook secret 验证请求
- HTTPS:生产环境中使用 HTTPS 保护 webhook 端点
- 网络策略:限制对传入 webhook 端点的访问
- 限流:实现限流以防止滥用
- 验证负载:处理前验证传入负载
Troubleshooting Incoming Webhooks
-
检查 webhook URL:确认 URL 正确且可访问
-
验证 secret:确保请求和 Repository CR 中的 secret 匹配
-
查看 PAC 日志:
-
验证 Repository CR:确保传入 webhook 配置正确
-
使用 curl 测试:用 curl 测试 webhook 端点
Best Practices
1. PipelineRun 管理
- 设置清理限制:使用
max-keep-runs防止积累 - 监控资源:关注 PipelineRun 的资源使用
- 归档重要运行:清理前导出重要的 PipelineRun
2. 监控
- 使用标签:为 PipelineRun 添加标签,便于筛选
- 设置告警:配置失败 PipelineRun 的告警
- 定期检查:定期查看 PipelineRun 状态和日志
3. 传入 Webhook
- 保护端点:始终使用 HTTPS 和 secret
- 验证负载:验证传入 webhook 负载
- 文档记录:记录 webhook 端点和负载格式
- 充分测试:生产使用前彻底测试 webhook 触发
Troubleshooting
PipelineRun 未创建
- 检查 webhook:确认 webhook 已配置且接收事件
- 查看 Repository CR:确保 Repository CR 配置正确
- 查看 PAC 日志:检查 PAC 控制器日志中的错误
- 验证 pipeline 文件:确认仓库中存在 pipeline 定义文件
PipelineRun 未运行
- 检查状态:查看 PipelineRun 状态和条件
- 查看日志:检查 PipelineRun 和 TaskRun 日志
- 验证资源:确保集群资源充足
- 检查权限:确认 ServiceAccount 拥有所需权限
状态未报告
- 验证 Git 提供者 token:确保 token 具备所需权限
- 检查 PAC Watcher:确认 PAC Watcher 正常运行
- 查看日志:检查 PAC Watcher 日志中的错误
- 测试连通性:确保 PAC 能访问 Git 提供者 API
Next Steps
- Trigger Pipelines - 了解不同的触发方式
- Maintain Pipeline Code - pipeline 定义指南
- Configure Repository - 仓库配置
- Common Issues - 故障排除指南