Config reference

Config reference

Reference tables for selected .sparkwing/sparkwing.yaml structs, generated from the Go structs the config parser enforces. Required reflects whether the field may be omitted. A sparkwing.yaml larger than 1 MiB is refused before it is parsed. See storage backends for profiles and spark libraries for library configuration.

Pipeline entry (a pipelines: list item)Section anchor link

FieldTypeRequiredDescription
namestringyesName is the invocable name (sparkwing run <name>), independent of the SDK registration key. It must match ^[A-Za-z0-9][A-Za-z0-9._-]*$.
entrypointstringyesEntrypoint is the key the SDK registered this entry's pipeline under, such as sparkwing.Register("Deploy", ...). Required.
sourcestringnoSource selects the Git ref to compile; jobs still execute in the submitted checkout.
descriptionstringnoDescription is the one-line summary surfaced by pipeline list.
onTriggersnoOn declares the triggers that auto-fire this pipeline. Absent means manual-only (a command invoked by name).
hiddenboolnoHidden omits the entry from default pipeline list output; it stays invocable by exact name and shows under list --all.
guardsGuardsnoGuards gate dispatch on where the run is dispatched, args, and git branch. Reject fires before any step runs when any token matches; Require fires when not every token matches. Token vocabulary: where:local, where:controller, arg:<flag>=<value>, git:branch=<name>, git:branch=default. A literal branch matches the checked-out head. The default token matches the repository's default branch: a GitHub App trigger records it, and any other run reads origin's HEAD from its checkout; a run that cannot resolve it is refused. arg: tokens read the merged argument set the run executes with, so a value supplied by defaults.args, this entry's own args: block or a flag's SDK default is guarded exactly like one typed on the command line. See pkg/pipelines/guards.go.
argsmap[string]stringnoArgs supplies per-arg default values. Higher priority than a field's default tag; lower than an explicit operator CLI flag. Keyed by the field's flag tag on pipeline Inputs or a job's WithArgs[T].
profilestringnoProfile pins the pipeline to the controller profile it names: sparkwing run refuses it, and sparkwing pipeline trigger accepts only --profile with this name. Empty leaves the pipeline unpinned.
requires[]stringnoRequires are runner-label requirements all jobs in this pipeline must satisfy in addition to their own Job.Requires(). Wholesale replaces defaults.requires when non-empty. The reserved label "local" keeps fleet helpers from claiming the node.

guardsSection anchor link

FieldTypeRequiredDescription
require[]stringno
reject[]stringno

Triggers (on:)Section anchor link

FieldTypeRequiredDescription
pushPushTriggernoPush fires on a git push the controller receives via webhook.
pull_requestPullRequestTriggernoPullRequest fires on a GitHub pull_request event the controller receives via webhook. The run checks out the PR head; base ref and PR number reach the pipeline on RunContext.Trigger.PullRequest.
scheduleScheduleTriggersnoSchedule fires the pipeline on one or more cron cadences. It accepts one mapping or a list of mappings; every entry declares where it fires, so a bare cron string is refused.
webhookWebhookTriggernoWebhook exposes a custom HTTP path that fires the pipeline.
pre_commitPreHookTriggernoPreHook fires from the installed git pre-commit hook.
pre_pushPostHookTriggernoPostHook fires from the installed git pre-push hook.
post_commitPostCommitHookTriggernoPostCommitHook fires from the installed git post-commit hook, after the commit is recorded. It never blocks or aborts the commit.

on.pushSection anchor link

FieldTypeRequiredDescription
branches[]stringnoBranches filters repository automation with Go path.Match globs.
paths[]stringnoPaths requires complete changed-file evidence; repository automation refuses declarations with this filter.

on.pull_requestSection anchor link

FieldTypeRequiredDescription
actions[]stringnoActions defaults to opened, synchronize, and reopened. Repository automation also supports closed and ready_for_review.
branches[]stringnoBranches filters the pull request's base branch with Go path.Match globs.

on.scheduleSection anchor link

FieldTypeRequiredDescription
namestringnoName distinguishes several cadences on one pipeline and appears in sparkwing schedules list as //. Required once a pipeline declares more than one entry; a lone entry is named "default". It matches ^[a-z0-9][a-z0-9-]*$ and is at most 40 characters.
cronstringyesCron is a five-field cron expression (minute hour day-of-month month day-of-week) with the usual lists, ranges, steps, month and day names, and the @hourly/@daily/@weekly/@monthly/@yearly aliases.
wherestringyesWhere says which side fires this entry: "local" fires from a host that armed it with sparkwing schedules install, "controller" from a controller it was installed on. One side per entry, and there is no default, so nothing fires somewhere you did not say it should. Declare one entry per side to fire from both.
tzstringnoTZ is the IANA zone the expression is read in, such as America/Denver. Default UTC. The word "local" means the zone of the host that runs the schedule.
overlapstringnoOverlap decides what happens when the cadence comes due while the previous scheduled run is still running: "skip" (default) records the fire as skipped, "queue" launches it anyway and lets admission order it.
catch_upstringnoCatchUp is how long after its due minute a fire may still happen when the host was asleep or the timer was late, as a Go duration such as 1h or 30m. Default 1h; values under 2m are rejected, and a value over 24h is lowered to 24h when the schedule is evaluated. A due minute older than the window is recorded as missed.
argsmap[string]stringnoArgs supplies argument values for this cadence's runs, keyed by CLI flag name exactly like args: on the pipeline. They sit above pipeline.args and below a host's own override for the schedule, so guards' arg: tokens read them and the fire records what it ran with.

on.webhookSection anchor link

FieldTypeRequiredDescription
pathstringyesPath is the HTTP path the controller exposes to fire the pipeline (e.g. /review).