- CI (
ci.yml) validates PRs (format-check, build, package, test). - Publish (
publish.yml) commits builtdist/artifacts after merges tomainandrelease-*branches. - Release (
release.yml) stamps versions and creates tags (manual trigger). Does not builddist/itself -- Publish handles that when Release pushes tomainorrelease-*. - Backport (
backport.yml) cherry-picks merged PRs to release branches via the backport-action itself.
Backporting cherry-picks PR commits to release branches.
Since dist/ differs across branches, including dist/ in PRs causes merge conflicts during backporting.
The Publish workflow builds and commits dist/ separately after each merge, avoiding this.
It is fine to temporarily include dist/ in a PR branch for E2E testing (via backport-action-test) or manual testing, but dist/ changes should be removed before merging to support backporting the PR.
When multiple PRs merge in quick succession, overlapping Publish runs can race.
The cancel-in-progress concurrency group ensures only the latest run completes.
If a stale run's push fails (non-fast-forward because main moved), it is harmless -- the latest run handles it.