Releases are cut from main by a maintainer with Hex and GitHub credentials.
Gate
All of these must pass on the commit to release:
mix deps.get
mix format --check-formatted
mix compile --warnings-as-errors --force
mix test
mix docs
mix hex.build
mix test includes the ported upstream suites of the forked backends
(test/formata/vendor/), the TOML 1.0.0 toml-test suite, and the required
JSON-Schema-Test-Suite cases for Draft 7 and Draft 2020-12. Run it on the
oldest supported Elixir (1.18) as well; CI does.
Also smoke-test the built package from an isolated consumer:
mix hex.build --unpack -o /tmp/formata-unpacked
# in a fresh project: {:formata, path: "/tmp/formata-unpacked"}; mix deps.get; run an example
# (mix deps.get must fetch nothing: Formata has no runtime dependencies)
Steps
- Update
@versioninmix.exsand theCHANGELOG.mdentry. - Run the gate.
- Commit, then tag:
git tag -a vX.Y.Z -m "vX.Y.Z"; pushmainand the tag. Never move or overwrite an existing tag or release. - Publish:
mix hex.publish(package and docs). - Create the GitHub release from the tag with the changelog entry:
gh release create vX.Y.Z --title vX.Y.Z --notes-file <notes>. - Verify https://hex.pm/packages/formata and https://hexdocs.pm/formata.