documentation/release.md
This guide is to describe how to make releases for the current repository.
Go to the GitHub interface, in the Release section.
Select the already drafted release or click on the Draft a new release button if you want to start a blank one, and fill the form with the appropriate information.
ā ļø Publish on a specific commit defined by the team. Or publish on main, but ensure you do want all the PRs merged in your release.
āļø The CIs will be triggered to:
latest, vX, vX.Y and vX.Y.Z) to DockerHub -> check the "Docker meta" steps in the CI to check the right tags are createdlatest git tag to the release commit.It happens some releases come with impactful bugs in production (e.g. indexation or search issues): we obviously don't wait for the next cycle to fix them and we release a patched version of Meilisearch.
latest git tag or the corresponding vX.Y.Z tag).# Ensure you get all the current tags of the repository
git fetch origin --tags --force
# Create the branch
git checkout vX.Y.Z # The latest release you want to patch
git checkout -b release-vX.Y.Z+1 # Increase the Z here
git push -u origin release-vX.Y.Z+1
Add the newly created branch release-vX.Y.Z+1 to "Target Branches" of this GitHub Ruleset.
Why? GitHub Merge Queue does not work with branch patterns yet, so we have to add the new created branch to the GitHub Ruleset to be able to use GitHub Merge Queue.
Change the version in Cargo.toml file. You can use our automation -> click on Run workflow -> Fill the appropriate version and run it on the newly created branch release-vX.Y.Z -> Click on "Run workflow". A PR updating the version in the Cargo.toml and Cargo.lock files will be created.
Open and merge the PRs (fixing your bugs): they should point to release-vX.Y.Z+1 branch.
Go to the GitHub interface, in the Release section and click on Draft a new release
ā ļøā ļøā ļø Publish on release-vX.Y.Z+1 branch, not on main!
š <ins>About the changelogs</s>
ā ļø <ins>If doing a patch release that should NOT be the latest release</s>:
Set as the latest release when creating the GitHub release. If you did, quickly interrupt all CIs and delete the GitHub release!latest git tag is not working for this situation currently and will attach the latest git tag to the just-created release, which is something we don't want! If you don't succeed in stopping the CI on time, don't worry, you just have to re-run the old CI corresponding to the real latest release, and the latest git tag will be attached back to the right commit.release-vX.Y.Z+1 to main by merging a PR originating release-vX.Y.Z+1 and pointing to main.ā ļø If you encounter any merge conflicts, please do NOT fix the git conflicts directly on the release-vX.Y.Z branch. It would bring the changes present in main into release-vX.Y.Z, which would break a potential future patched release.
Instead:
release-vX.Y.Z+1, like tmp-release-vX.Y.Z+1tmp-release-vX.Y.Z+1 branch and pointing to mainmain branch into tmp-release-vX.Y.Z+1 and fixing them on your machine.main