Run Pipelines with ScheduledTrigger
For the architecture, motivations, and design background of ScheduledTrigger, see the ScheduledTrigger Concepts page.
TOC
OverviewSupported Resource TypesTypical WorkflowBasic Manifest StructureStep-by-Step Configuration1. Choose the cadence and time zone2. Point to the TriggerTemplate3. Pass parameters4. Apply the manifest5. Validate the resourceManaging ScheduledTrigger Over TimeInline Template ExampleTime-Zone-Aware Weekly ExampleReference LinksOverview
ScheduledTrigger lets you execute a TriggerTemplate on a cron-style cadence without relying on inbound webhooks. Each tick of the schedule renders the template, injects any static or time-based parameters, and creates the Tekton resources (for example PipelineRuns) you defined. This how-to walks you through preparing the prerequisites, writing the manifest, and validating the automation end to end.
Supported Resource Types
ScheduledTrigger currently supports the following Tekton Pipelines resources in TriggerTemplate:
Recommendation: use
tekton.dev/v1for the following resources;tekton.dev/v1beta1is still accepted but is deprecated and will be removed in a future release.
Typical Workflow
- Confirm the TriggerTemplate you want to run periodically (reusable reference or inline spec).
- Decide on the cadence, time zone, and any contextual parameters the automation needs.
- Create a
ScheduledTriggermanifest that binds the template to the schedule. - Apply the manifest and monitor the resource status/events to ensure executions occur.
Basic Manifest Structure
Step-by-Step Configuration
1. Choose the cadence and time zone
- Use standard cron syntax (minute hour day-of-month month day-of-week). Example:
15 1 * * 1-5runs at 01:15 Monday through Friday. - Set
spec.timeZoneto an Olson time zone string (for exampleEurope/Paris). If omitted, the controller uses its own time zone. - Prefer explicit time zones when business hours differ from the cluster default or when daylight-saving changes matter.
2. Point to the TriggerTemplate
You can reference a reusable template via spec.triggerTemplate.ref, or embed a full template inline under spec.triggerTemplate.spec. References keep multiple ScheduledTriggers in sync, while inline specs make each manifest self-contained.
3. Pass parameters
- Use
spec.paramsto feed static values into the template ($(tt.params.<name>)). Context placeholders (for example$(context.date)and$(context.datetime)) are only valid in this section. - Combine those placeholders with your own params to generate deterministic run names, tags, or report partitions, then reference them inside the template as
$(tt.params.<name>). - Because Tekton Trigger parameters are strings, serialize complex objects (for example JSON) before passing them.
4. Apply the manifest
Target the namespace where the TriggerTemplate lives. Kubernetes RBAC must allow the controller to resolve and execute that template.
5. Validate the resource
Check the LAST SCHEDULETIME column (or the .status.lastScheduleTime field) to confirm the controller is firing. Kubernetes events surfaced by kubectl describe will indicate successful runs or scheduling errors (for example invalid cron expressions or missing templates).
If executions still do not start as expected, review the ScheduledTrigger troubleshooting guide for detailed investigation steps.
Managing ScheduledTrigger Over Time
- Update cadence: Edit the resource (
kubectl editor apply a new manifest) to changespec.scheduleorspec.timeZone. The next tick recalculates automatically. - Rotate parameters: Modify
spec.paramsto update static values such as environment names, feature flags, or recipients. - Switch templates: Point
spec.triggerTemplate.refto a new template, or update the inline spec. Subsequent executions use the new logic immediately. - Pause or remove: Delete the ScheduledTrigger to stop future runs. Recreate it later with the same name if you need to resume the cadence.