Skip to main content

Legend

Triggers

Webhook triggers that automatically start pipeline runs on events like git push

PipelineTrigger

Pipeline trigger definition. Discriminated by the type 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: webhook

GithubPipelineTrigger

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:github
enum
required
Webhook event type to listen for.Allowed values: push | pull_request | pull_request_review | pull_request_review_comment | pull_request_review_thread | release | deployment

GitlabPipelineTrigger

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:gitlab
enum
required
Webhook event type to listen for.Allowed values: push | merge_request | tag_push

SchedulePipelineTrigger

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: schedule
string
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 execution
string
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 | organization
integer
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 | skip
integer
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 | newest
boolean
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 | shared

TriggerFilter

Trigger filter configuration
string | 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: string

TriggerRunVariantConfig

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:
  • push
  • pull_request
  • pull_request_review
  • pull_request_review_comment
  • pull_request_review_thread
  • release
  • deployment

GitlabWebhookEvent

GitLab webhook events that can trigger a pipelineAllowed values:
  • push
  • merge_request
  • tag_push

ConcurrencyBehavior

Behavior when the concurrency limit is reachedAllowed values:
  • queue
  • cancel-in-progress
  • cancel-intermediate
  • skip

ConcurrencyMode

How a holder of the key relates to the other holdersAllowed values:
  • exclusive
  • shared

ConcurrencyScope

Scope used to share a concurrency limitAllowed values:
  • pipeline
  • organization

QueueOverflowDiscard

Queue overflow discard strategyAllowed values:
  • oldest
  • newest

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)