Managing releases
We automatically publish all libraries in the monorepo to Sonatype on every
commit on master
.
We use a modified version of
sbt-ci-release
that handles
publishing multiple packages at once.
We publish both stable and snapshot releases, based on the strategy detailed below.
Snapshot releases
Snapshot releases are published for every library for every commit on master.
Their version is computed using a modified version of
sbt-dynver
that handles tag prefixes
(see the next paragraph).
To use snapshot releases, projects must add Sonatype snapshots
resolver to
their Sbt build:
resolvers += Resolver.sonatypeRepo("snapshots")
Stable releases
Stable releases are published whenever there's a matching Git tag associated with a current commit on master.
Each project in the monorepo can configure the dynverTagPrefix
setting to
declare its matching tag.
👉 Example:
enumeroCore
andenumeroCirce
useenumero-
as their tag prefix, meaning that a stable release will be published whenever a Git tag starting withenumero-
is found on master.
Releasing a stable version
To release a new stable version of a library, push a Git tag on master with this
pattern: <PREFIX>v<VERSION>
.
👉 Example: you can release the version 1.0.0 of
enumeroCore
andenumeroCirce
by pushing theenumero-v1.0.0
tag.
You can do this directly from the new release page on GitHub
Stable releases are automatically synced with Maven Central, meaning you can depend on them without adding any resolver to Sbt. The sync process usually takes ~10 minutes.