Skip to main content

Triggers

Triggers define when and how workflows execute. Configure triggers at the workflow level to determine the events that cause a workflow to run.

Fields

trigger (optional)

The trigger configuration object that defines when the workflow executes.

Type: Trigger object

Default: None (workflow runs only when manually triggered)

Trigger types

Schedule triggers

Schedule triggers run workflows at specific times using cron expressions.

schedule field

A list of schedule objects, each containing a cron expression.

Type: List of schedule objects

Example:

trigger:
schedule:
- cron: "0 0 * * *" # Daily model retraining
- cron: "0 */6 * * *" # Data refresh every 6 hours

Cron expression format

Cron expressions use the standard 5-field format:

┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday to Saturday)
│ │ │ │ │
* * * * *
Note

All cron expressions are evaluated in UTC timezone.

Special characters:

CharacterDescriptionExample
*Any value* * * * * (every minute)
,Value list separator1,3,5 (1, 3, and 5)
-Range of values1-5 (1 through 5)
/Step values*/15 (every 15 units)

Common cron patterns

PatternDescription
0 0 * * *Daily at midnight UTC
0 */6 * * *Every 6 hours
0 9 * * 1-5Weekdays at 9 AM UTC
0 0 1 * *First day of every month
*/15 * * * *Every 15 minutes
0 0 * * 0Every Sunday at midnight
30 2 * * *Daily at 2:30 AM UTC

Schedule inputs

Schedules can provide input values for workflows that define inputs.

Field: inputs (optional map of string to string)

Example:

inputs:
dataset:
type: string
required: true

trigger:
schedule:
- cron: "0 0 * * *"
inputs:
dataset: full-training-set
- cron: "0 12 * * *"
inputs:
dataset: validation-set

Each schedule can provide different input values, allowing the same workflow to run with different parameters at different times.

Note

Concurrent execution: Each schedule triggers independently. If multiple schedules fire at the same time, they run as separate concurrent workflow executions.

For more details on defining and using inputs, see Inputs.

Callable workflows

To make a workflow callable by other workflows, set trigger.callable: true. For details, see Reusable workflows.

Example:

trigger:
callable: true

Complete example

id: data-pipeline
name: Data Processing Pipeline

inputs:
dataset:
type: string
required: true
description: Dataset to process
full_refresh:
type: bool
default: false
description: Whether to do a full refresh

trigger:
schedule:
# Daily full refresh at midnight
- cron: "0 0 * * *"
inputs:
dataset: production
full_refresh: "true"
# Hourly incremental updates
- cron: "0 * * * *"
inputs:
dataset: production
full_refresh: "false"

jobs:
process:
steps:
- name: Process data
env:
DATASET: ${{ .inputs.dataset }}
FULL_REFRESH: ${{ .inputs.full_refresh }}
run: python process.py --dataset $DATASET --full-refresh $FULL_REFRESH

Feedback