Legend
Triggers
Webhook triggers that automatically start pipeline runs on events like git pushPipelineTrigger
Pipeline trigger definition. Discriminated by thetype field so each webhook type can enforce
provider-specific event values.Discriminated union. The type field selects which schema applies.GenericPipelineTrigger
Pipeline trigger for generic webhooks.string
required
Unique identifier for this trigger
boolean | null
default:"true"
Whether this trigger is active. Disabled triggers are not registered.
Default: true(templateable)
string
required
Git repository in owner/repo or host/owner/repo format(templateable)
TriggerFilter
Filters to narrow which events trigger the pipelineSee: TriggerFilter
ConcurrencyConfig
Concurrency configuration for runs started by this trigger.
An explicit key shares its configured concurrency scope with steps and blocks.
Without a key, each trigger variant receives its own auto-generated scope.See: ConcurrencyConfig
map<string,TriggerRunVariantConfig>
required
Maps variant IDs to run configuration — keys must match declared variant IDs.
At least one variant must be specified.See: TriggerRunVariantConfig
enum
required
Webhook type for generic webhook triggers.Allowed values:
webhookGithubPipelineTrigger
Pipeline trigger for GitHub webhooks.string
required
Unique identifier for this trigger
boolean | null
default:"true"
Whether this trigger is active. Disabled triggers are not registered.
Default: true(templateable)
string
required
Git repository in owner/repo or host/owner/repo format(templateable)
TriggerFilter
Filters to narrow which events trigger the pipelineSee: TriggerFilter
ConcurrencyConfig
Concurrency configuration for runs started by this trigger.
An explicit key shares its configured concurrency scope with steps and blocks.
Without a key, each trigger variant receives its own auto-generated scope.See: ConcurrencyConfig
map<string,TriggerRunVariantConfig>
required
Maps variant IDs to run configuration — keys must match declared variant IDs.
At least one variant must be specified.See: TriggerRunVariantConfig
enum
required
Webhook type — determines which events are supported.Allowed values:
webhook:githubenum
required
Webhook event type to listen for.Allowed values:
push | pull_request | pull_request_review | pull_request_review_comment | pull_request_review_thread | release | deploymentGitlabPipelineTrigger
Pipeline trigger for GitLab webhooks.string
required
Unique identifier for this trigger
boolean | null
default:"true"
Whether this trigger is active. Disabled triggers are not registered.
Default: true(templateable)
string
required
Git repository in owner/repo or host/owner/repo format(templateable)
TriggerFilter
Filters to narrow which events trigger the pipelineSee: TriggerFilter
ConcurrencyConfig
Concurrency configuration for runs started by this trigger.
An explicit key shares its configured concurrency scope with steps and blocks.
Without a key, each trigger variant receives its own auto-generated scope.See: ConcurrencyConfig
map<string,TriggerRunVariantConfig>
required
Maps variant IDs to run configuration — keys must match declared variant IDs.
At least one variant must be specified.See: TriggerRunVariantConfig
enum
required
Webhook type — determines which events are supported.Allowed values:
webhook:gitlabenum
required
Webhook event type to listen for.Allowed values:
push | merge_request | tag_pushSchedulePipelineTrigger
Pipeline trigger that starts runs on a cron schedule.string
required
Unique identifier for this trigger
boolean | null
default:"true"
Whether this trigger is active. Disabled triggers are not registered.
Default: true(templateable)
enum
required
Trigger type for cron schedule triggers.Allowed values:
schedulestring
required
Cron expression defining when the pipeline runs (UTC unless timezone is set).
The five fields are: minute, hour, day of month, month, and day of week.
Supports standard 5-field cron plus
@hourly, @daily, @midnight,
@weekly, @monthly, @yearly, @annually, and @every <duration>
(e.g. @every 30m).string
IANA timezone for evaluating the cron expression. Defaults to UTC.
ConcurrencyConfig
Concurrency configuration for runs started by this trigger.
An explicit key shares its configured concurrency scope with steps and blocks.
Without a key, each trigger variant receives its own auto-generated scope.See: ConcurrencyConfig
map<string,TriggerRunVariantConfig>
required
Maps variant IDs to run configuration — keys must match declared variant IDs.
At least one variant must be specified.See: TriggerRunVariantConfig
ConcurrencyConfig
Concurrency configuration for controlling parallel executionstring
Unique identifier for the concurrency scope
Triggers, steps, and blocks with the same key share a concurrency limit
By default, the same key in different pipelines does not conflict
Default: auto-generated unique key for the configured trigger, step, or block(minLen:1)
enum
default:"pipeline"
Where the concurrency key is shared
Organization-scoped concurrency requires an explicit key
Default: “pipeline”Allowed values:
pipeline | organizationinteger
default:"0"
Maximum concurrent executions allowed (0 means unlimited, 1 means sequential)
Default: 0 (unlimited)(format:int32,min:0)
enum
default:"queue"
Behavior when the concurrency limit is reached
“queue” waits for a slot; “cancel-in-progress” cancels older contenders;
“cancel-intermediate” immediately replaces the oldest contender when its
immutable workflow-start age is under 15 seconds and the replacement
chain, anchored to the original first workflow start, is under 30 seconds.
Replacements never reset the 30-second cap. Replacements can continue below
capacity, including at value 1. At either age limit, it preserves the
oldest and newest contenders while cancelling intermediates. A run is not
cancelled by either cancelling behavior once a step with “cancellable:
false” (deploy and terraform:apply by default) has started; manual
cancellation is unchanged.
“skip” denies the new contender and ends the run as skipped.
This controls trigger/step/block admission only and never relaxes the
separate deployment-manager serialization used by deploy steps.
Default: “queue”Allowed values:
queue | cancel-in-progress | cancel-intermediate | skipinteger
Maximum queue size for “queue”; for cancelling behaviors, widens the
survivor window. Unset means unlimited queue capacity; 0 means no queue
and immediate denial. With “queue”, immediate denial is reported as
QUEUEING_DISABLED and the pipeline run ends as cancelled with “the trigger
concurrency queue was full”; “skip” also denies immediately but ends the
run as skipped. For “cancel-in-progress” and “cancel-intermediate”, the
survivor window is value + positive queue_size total, including the oldest
contender for “cancel-intermediate”; contenders outside it are cancelled
or evicted at
admission even when queue_size is unset, so unset does not mean unlimited
retention. For “cancel-intermediate”, the survivors are the oldest
contender plus the newest contenders that fit in that total window. Within
the age limits above, the oldest young contender may instead be replaced
by the strictly newer run. With “cancel-intermediate” and value: 1,
queue_size must be at least 1 to keep the newest waiting run while the
current run finishes.(format:int32,min:0)
enum
default:"oldest"
Which items to discard when queue overflows
Only applies when behavior is “queue” and queue_size > 0
Default: “oldest”Allowed values:
oldest | newestboolean
Whether a run holding this key at this step or block may be cancelled by
a newer run under “cancel-in-progress” or “cancel-intermediate”. With
false, the newer run queues behind it instead, and a cancellation that
arrives after the step has started is refused. Manual cancellation is
unaffected. Defaults to false for deploy and terraform:apply steps and
true for everything else. For example, a plan step with
“cancel-in-progress” replaces an older run’s plan on the same key but
queues behind an apply step that shares the key with “cancellable: false”.
enum
default:"exclusive"
How this holder relates to other holders of the key. “exclusive” takes
one of the
value slots. “shared” runs alongside any number of other
shared holders but never alongside an exclusive one: it queues while an
exclusive holder has the key, and an exclusive contender queues behind
it. Together they form a reader/writer lock, e.g. Terraform plans
(shared) run in parallel across branches while an apply (exclusive)
has the stack to itself. Waiters are promoted in arrival order, so a
queued exclusive run is never starved by later shared arrivals. Steps
and blocks of one run that hold the same key at the same time must use
the same mode.
Default: “exclusive”Allowed values: exclusive | sharedTriggerFilter
Trigger filter configurationstring | null
Only trigger when this branch is pushed(templateable)
string | null
Only trigger when a tag matching this pattern is pushed(templateable)
string | string[]
Only trigger for specific webhook actions.
Ignored when the event payload does not include an action field.(templateable)
string[] | null
Only trigger when files in these paths are changed.
Each entry is a glob matched against every changed file path, relative to
the repository root:
* matches within one path segment, ** matches
across segments, and {a,b} and [abc] are supported. Dotfiles are
matched, and a leading / is ignored.
Prefix a pattern with ! to exclude files: a changed file counts only if
it matches at least one non-! pattern and no ! pattern. When every
pattern is a ! exclusion, all changed files are included first, so
paths: ["!docs/**"] means “any change outside docs/”.
The trigger fires when at least one changed file counts.(templateable)PayloadCondition[]
Filter by webhook payload fields using dot-notation paths.
All conditions must match.See: PayloadCondition
TriggerRepo
Git repository identifier used by webhook triggers.Type: stringTriggerRunVariantConfig
Per-variant run configuration for a trigger.string | null
Description for the pipeline run created by this trigger variant(templateable)
map<string,any | null>
Input overrides for this variant run(templateable)
GithubWebhookEvent
GitHub webhook events that can trigger a pipelineAllowed values:pushpull_requestpull_request_reviewpull_request_review_commentpull_request_review_threadreleasedeployment
GitlabWebhookEvent
GitLab webhook events that can trigger a pipelineAllowed values:pushmerge_requesttag_push
ConcurrencyBehavior
Behavior when the concurrency limit is reachedAllowed values:queuecancel-in-progresscancel-intermediateskip
ConcurrencyMode
How a holder of the key relates to the other holdersAllowed values:exclusiveshared
ConcurrencyScope
Scope used to share a concurrency limitAllowed values:pipelineorganization
QueueOverflowDiscard
Queue overflow discard strategyAllowed values:oldestnewest
PayloadCondition
Condition to check against a webhook payload field. Operators are evaluated in order and the first configured operator wins.string
required
Dot-notation path to the payload field
string | null
Exact string match(templateable)
string | null
Substring match(templateable)
string | null
Glob pattern match(templateable)
string[] | null
Value must be one of these strings(templateable)
PayloadConditionMatcher
Negated payload field matcher. The condition fails when this matcher is true.See: PayloadConditionMatcher
PayloadConditionMatcher
Payload field matcher used by positive conditions and negated conditions.string | null
Exact string match(templateable)
string | null
Substring match(templateable)
string | null
Glob pattern match(templateable)
string[] | null
Value must be one of these strings(templateable)