Because we use
RustlerPrecompiled,
releasing is a bit more involved than it would be otherwise.
-
Pick the new release
version.- We follow Semantic Versioning.
- Should be the current version in
mix.exswith-devremoved.
-
Begin drafting a new release.
- Go to https://github.com/elixir-explorer/explorer/releases.
- Click "Draft a new release".
- Under "Select tag", set the tag to
v{version}, e.g.v0.11.0. - Keep the target branch as
main. - Click "Generate release notes".
- Stop here. Wait until later to actually publish the release.
-
Open a PR with any changes needed for the release. Must include:
- Updating the
versioninmix.exs - Updating the
versionin any other files that reference it, likeREADME.md(multiple places)notebooks/exploring_explorer.livemd
- Updating the
CHANGELOG.mdto reflect the release- Use the generated release notes from earlier as a starting point.
- Edit the entries to follow the format from https://keepachangelog.com/en/1.1.0/.
- Updating the
-
Merge the PR.
-
On the release draft page, click "Publish release".
-
Publishing the release will kick off the "Build precompiled NIFs" GitHub Action. Wait for this to complete.
- It usually takes around 40-60 minutes.
-
Generate the artifact checksums.
- Go to your local version of Explorer.
- Ensure you have the latest version of
main(post PR merge). - Remove any intermediate builds by running:
rm -rf native/explorer/target - Download all the artifacts and generate the checksums:
EXPLORER_BUILD=true mix rustler_precompiled.download Explorer.PolarsBackend.Native --all --print
-
Paste the checksums into the release description on GitHub.
- Go to the release published earlier at the top of https://github.com/elixir-explorer/explorer/releases.
- Click the "Edit" pencil icon.
- At the bottom, paste the SHA256 contents under the heading "SHA256 of the artifacts" (ensure the contents are formatted to look like code).
-
Run
mix hex.publish.- Double check the dependencies and files.
- Enter "Y" to confirm.
- Discard the auto-generated
.exsfile beginning withchecksum.
-
Bump the version in the
mix.exsand add the-devflag to the end.- Example:
0.11.0to0.11.1-dev. - Can either open up a PR or push directly to
main.
- Example: