Index
zipx generates GitHub Actions from your real sbt graph. Aggregate-first works for libraries and
multi-service monorepos; Layer/Graph when you need waves, per-module isolation, or multi-environment deploys. Typed
capabilities cover test, Central, GitHub Packages, docker, and deploy so you do not hand-roll YAML module lists.
Drift fails the PR via zipxWorkflowCheck.
If you have maintained a second copy of the build (disconnected CI or a restated Bazel graph), start with Why zipx: a kinder path back to one honest graph. The power is for every Scala team on Actions, and especially monorepos.
Guide: Why zipx → Quick start → Execution modes → Capabilities → Custom capabilities → Verify → Affected → Caching → Remote cache for teams → From Bazel → Action pins → Dependency updates → Docker and deploy → Job conditions → Packs → Settings.
Install
// project/plugins.sbt
addSbtPlugin("rocks.earlyeffect" % "sbt-zipx" % "0.1.3")Generate & check
sbt zipxWorkflowGenerate
git add .github/workflows/ci.yml
sbt zipxWorkflowCheck # fails CI when the committed YAML driftsAction pins (optional)
# Prefer .github/zipx/action-pins.yml + Dependabot; see Action pins docs
zipxDependabotSync := true
sbt zipxActionsPull # after Dependabot bumps workflow uses:Documentation
Continue with: