name: release-engineering description: Manage the full software release process, including version bumps, changelogs, Git tags, and GitHub releases.
When performing release engineering, always follow these steps:
Determine the release type — review all unreleased commits since the last tag and classify the release as
major,minor, orpatchfollowing Semantic Versioning. Present the recommendation to the user and confirm before proceeding.Run the full test suite — run all tests with 4 partitions and seed 9527 and wait for all to pass before proceeding. Do not continue if any test fails.
for p in 1 2 3 4; do MIX_TEST_PARTITION=$p mix test --partitions 4 --seed 9527 & done; waitUpdate the version — bump the
versionfield inmix.exsto match the new release version.Update
CHANGELOG.md— add a new version entry at the top following the Keep a Changelog format. Group changes underAdded,Changed,Fixed,Removed, orSecurityas appropriate. Include all notable changes since the previous release.Commit the release — stage
mix.exsandCHANGELOG.mdtogether and commit with the messagechore: release vX.Y.Z.Tag the release — create an annotated Git tag (e.g.,
git tag -a v1.2.3 -m "v1.2.3") and push it to the remote (git push --tags).Create a GitHub release — use
gh release create vX.Y.Zwith the correspondingCHANGELOG.mdsection as the release body.