Incoming Webhooks
传入 webhook 允许您通过 HTTP POST 请求直接触发 pipeline,无需依赖 Git 事件。
目录
Overview
传入 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 - 故障排除指南