You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
All Scala repositories hand-roll their own ci.yml. That means every sbt/scoverage/coverage trap has
to be rediscovered per repo, and quality gates differ silently between projects. Tracking the move to
a single shared pipeline here.
Steps
Add a reusable ci.yml (done, Add reusable Scala CI workflow #3) — tests, coverage → Coveralls, binary compatibility,
scalafmt, scaladoc. Coverage build runs before other compiles and sbt/setup-sbt disk cache is
disabled while coverage is on, because sbt 2's compile cache is not keyed on scoverage
instrumentation and would otherwise yield a silently empty report. Gates run as explicit sbt tasks
rather than through a per-repo check alias, which can be (and is) stubbed to show version.
Starter workflows for new repos — Add Scala starter workflows .github#7 adds workflow-templates/ so new
repos get the shared CI and release workflows offered by default.
Roll out to the remaining active public Scala libraries as thin caller files.
Optionally enforce with a workflows ruleset rule, the same mechanism the AI Policy Check
already uses, plus a documented exclude list.
Known gaps
Binary-compatibility checking is vacuous wherever CI checks out shallow: sbt-dynver reports 0.0.0
so there is no previous version to compare against. The shared workflow uses fetch-depth: 0, which
means adopting it can surface real pre-existing incompatibilities.
SonarQube Cloud analysis is inconsistent across the org and is being handled separately.
All Scala repositories hand-roll their own
ci.yml. That means every sbt/scoverage/coverage trap hasto be rediscovered per repo, and quality gates differ silently between projects. Tracking the move to
a single shared pipeline here.
Steps
ci.yml(done, Add reusable Scala CI workflow #3) — tests, coverage → Coveralls, binary compatibility,scalafmt, scaladoc. Coverage build runs before other compiles and
sbt/setup-sbtdisk cache isdisabled while coverage is on, because sbt 2's compile cache is not keyed on scoverage
instrumentation and would otherwise yield a silently empty report. Gates run as explicit sbt tasks
rather than through a per-repo
checkalias, which can be (and is) stubbed toshow version.Adopt shared Scala CI workflow cats-helper#397 (sbt 1, stubbed
check).workflow-templates/so newrepos get the shared CI and release workflows offered by default.
workflowsruleset rule, the same mechanism the AI Policy Checkalready uses, plus a documented exclude list.
Known gaps
0.0.0so there is no previous version to compare against. The shared workflow uses
fetch-depth: 0, whichmeans adopting it can surface real pre-existing incompatibilities.
Rollout PRs
Not included
sequentiallyuses sbt-projectmatrix and so has no++cross-build; the shared workflow needs an input for that first.metered-scaffeinepublishes without sbt-dynver or the Artifactory plugin.