Settings

All settings have sensible derived defaults. Write them as bare settings (no ThisBuild /).

Build-level

SettingTypeDefaultPurpose
zipxCapabilitiesSeq[Capability]Seq.emptycustom capabilities (same name replaces built-in)
zipxWorkflowNameString"CI"workflow name:
zipxWorkflowPathString.github/workflows/ci.ymloutput path
zipxJavaVersionString"21"JDK for setup-java and cache key
zipxRunnerOsString"ubuntu-latest"default runner
zipxScalaMatrixBooleantrueper-module Scala matrix (Graph test only)
zipxActionsActionPinsjar defaultsone-off uses: override (prefer pin file; see Action pins)
zipxActionsPathString.github/zipx/action-pins.ymlpin file path ("" disables file loading)
zipxDependabotSyncBooleanfalsealso generate .github/workflows/zipx-action-pins-sync.yml
zipxScalaStewardBooleanfalsealso generate .github/workflows/zipx-scala-steward.yml
zipxWorkflowDispatchBooleanfalseemit on.workflow_dispatch
zipxCacheCacheBackendLocalDircache strategy
zipxCacheEpochCacheEpochGitTags()LocalDir epoch strategy (runtime tags by default)
zipxPushBranchesSeq[String]Seq("main")push triggers
zipxReleaseTagPatternStringv[0-9]+.[0-9]+.[0-9]+publish gate
zipxAffectedOnPRBooleantrueaffected setup when Graph Verify present
zipxAffectedOnPushBooleanfalsealso scope pushes
zipxSkipMergedPrPushBooleantrueskip Verify on merged-PR pushes
zipxCacheRehydrateOnMergeBooleantrueLocalDir: rehydrate default-branch cache when Verify skips after merge
zipxCacheRehydrateTaskString"compile"sbt command for the rehydrate job
zipxCacheRehydrateExtraStepsStepContext => List[Step]emptyopt-in steps on rehydrate (after cache, before task)
zipxCacheRehydrateEnvMap[String, EnvValue]emptyrehydrate-only env overlay (wins over zipxEnv)
zipxEnvMap[String, EnvValue]emptybuild-wide job env (normal jobs; not workflow_call callers)
zipxCancelSupersededRunsBooleantrueworkflow concurrency; never cancel release tags
zipxVerifyCleanVerifyCleanNoneoptional clean before Verify commands
zipxVerifyCleanLabelOption[String]Some("clean")PR label that prepends cleanFull when verifyClean is None

Per-project

SettingTypeDefaultPurpose
zipxCiRelevantBooleantrue (false for aggregators)include in test participation
zipxPublishOption[Boolean]derived from publish / skip (+ publishArtifact)force publish on/off
zipxDockerBooleanderived from DockerPluginbuild a docker image
zipxTestTaskString"test"Aggregate root Verify + Graph/Layer task
zipxPublishTaskString"publish"publish task

By default a module is in the publish graph when it is not an aggregator, publish / skip is false, and publishArtifact is true. Prefer publish / skip := true for non-publishers; set zipxPublish := Some(false/true) only to override that derivation.

Capability model

Capability fields: name, phase, ordering, gate, participates, command, matrixed, targets, needsCapabilities, permissions, runsOn, extraSteps, scope (Aggregate / Layer / Graph / Once), env, workflowCall, condition (Option[JobCondition], default None; prefer withCondition(...) to set, or andCondition(...) to layer onto packs that already ship a condition). Compose with JobCondition && / || / !.

Constructors: Capability.test / .testJoined / .publish / .docker, .*Layers, .*Graph, .deploy / .deployGraph, .custom, .once. Packs: ZipxCentral.*, ZipxGitHubPackages.*, ZipxDocs.pages. A Target is (name, environment, env, condition) with typed EnvValues and JobCondition. Job env merge: zipxEnv → cache backend → capability → target (zipxCacheRehydrateEnv overlays zipxEnv on rehydrate only). zipxEnv is omitted on reusable-workflow caller jobs (workflowCall / uses:). See Job conditions for recipes (fork gate, PR-label stage ECR, multi-publish, docs on dispatch).

Tasks

TaskPurpose
zipxWorkflowGeneratewrite the workflow YAML (and companion workflows when enabled)
zipxWorkflowCheckfail if committed YAML is stale (includes companions when enabled)
zipxActionsPullpull uses: SHAs from the workflow into the pin file, then regenerate
zipxGraphprint modules, edges, flags, layers
zipxPublishOrderprint contracted publish waves
zipxAffectedModules <base-ref>print affected modules (used by the affected job)

Action pins

SHA pins for generated uses: lines. Full guide: Action pins.

Resolve order: explicit zipxActions (≠ Defaults) → .github/zipx/action-pins.yml when present → jar ActionPins.Defaults. Dependabot bumps workflow YAML; zipxActionsPull (or the sync workflow) writes the pin file and regenerates so zipxWorkflowCheck stays green.