使用 ScheduledTrigger 运行 Pipelines
TIP
有关 ScheduledTrigger 的架构、动机和设计背景,请参阅 ScheduledTrigger Concepts 页面。
目录
概述支持的资源类型典型工作流程基本清单结构逐步配置1. 选择节奏和时区2. 指向 TriggerTemplate3. 传递参数4. 应用清单5. 验证资源ScheduledTrigger 的长期管理内联模板示例支持时区的每周示例参考链接概述
ScheduledTrigger 允许您以类 cron 的节奏执行 TriggerTemplate,而无需依赖入站 webhook。计划的每一次触发都会渲染模板,注入任何静态或基于时间的参数,并创建您定义的 Tekton 资源(例如 PipelineRuns)。本操作指南将引导您完成准备前提条件、编写清单以及端到端验证自动化的过程。
支持的资源类型
ScheduledTrigger 当前支持 TriggerTemplate 中以下 Tekton Pipelines 资源:
建议:对以下资源使用
tekton.dev/v1;tekton.dev/v1beta1仍被接受,但已弃用,未来版本将移除。
典型工作流程
- 确认您想要定期运行的 TriggerTemplate(可复用引用或内联规范)。
- 决定自动化所需的节奏、时区及任何上下文参数。
- 创建一个将模板绑定到计划的
ScheduledTrigger清单。 - 应用清单并监控资源状态/事件,确保执行发生。
基本清单结构
逐步配置
1. 选择节奏和时区
- 使用标准 cron 语法(分钟 小时 月中日 月 星期)。示例:
15 1 * * 1-5表示周一至周五的 01:15 运行。 - 将
spec.timeZone设置为 Olson 时区字符串(例如Europe/Paris)。如果省略,控制器使用自身时区。 - 当业务时间与集群默认时区不同或需考虑夏令时变化时,建议显式指定时区。
2. 指向 TriggerTemplate
您可以通过 spec.triggerTemplate.ref 引用可复用模板,或在 spec.triggerTemplate.spec 内联完整模板。引用有助于多个 ScheduledTrigger 保持同步,内联规范则使每个清单自包含。
3. 传递参数
- 使用
spec.params向模板传入静态值($(tt.params.<name>))。上下文占位符(如$(context.date)和$(context.datetime))仅在此处有效。 - 将这些占位符与自定义参数结合,生成确定性的运行名称、标签或报告分区,然后在模板内引用为
$(tt.params.<name>)。 - 由于 Tekton Trigger 参数为字符串,传递复杂对象(如 JSON)前需序列化。
4. 应用清单
目标命名空间应为 TriggerTemplate 所在位置。Kubernetes RBAC 必须允许控制器解析并执行该模板。
5. 验证资源
检查 LAST SCHEDULETIME 列(或 .status.lastScheduleTime 字段)以确认控制器正在触发。通过 kubectl describe 显示的 Kubernetes 事件将指示成功运行或调度错误(例如无效的 cron 表达式或缺失模板)。
如果执行仍未按预期启动,请查看 ScheduledTrigger 故障排查指南 以获取详细调查步骤。
ScheduledTrigger 的长期管理
- 更新节奏:编辑资源(
kubectl edit或应用新清单)以更改spec.schedule或spec.timeZone。下一次触发将自动重新计算。 - 轮换参数:修改
spec.params以更新静态值,如环境名称、功能标志或接收者。 - 切换模板:将
spec.triggerTemplate.ref指向新模板,或更新内联规范。后续执行将立即使用新逻辑。 - 暂停或删除:删除 ScheduledTrigger 以停止未来运行。若需恢复节奏,可稍后使用相同名称重新创建。