This documentation is highly inspired from the `docs` project and provide details for our project, like using the make command.
2.4 KiB
Releasing a new version
Whenever we are cooking a new release (e.g. 4.18.1) we should follow a standard procedure described below:
-
Checkout and pull changes from the
mainbranch to ensure you have the latest updates.git checkout main git pull -
The next steps are automated in the
scripts/release.py, you can run it using:make releaseThis script will ask you for the version you want to release and the kind of release (patch, minor, major). It will then:
-
Create a new branch named:
release/4.18.1. -
Bump the release number for backend project, frontend projects:
- for backend, update the version number by hand in
pyproject.toml, - for each project (
src/frontend,src/frontend/apps/*,src/mail), runyarn version --new-version --no-git-tag-version 4.18.1in their directory. This will update theirpackage.jsonfor you.
- for backend, update the version number by hand in
-
Update the project's
Changelogfollowing the keepachangelog recommendations -
Commit your changes with the following format: the 🔖 release emoji, the type of release (patch/minor/patch) and the release version:
🔖(minor) bump release to 4.18.0
-
-
Open a pull request and ait for an approval from your peers and merge it.
-
Tag and push your commit:
git tag v4.18.1 && git push origin tag v4.18.1Doing this triggers the CI and tells it to build the new Docker image versions that you targeted earlier in the Helm files.
-
Ensure the new backend and frontend image tags are on Docker Hub.
-
The release is now done!
Deploying
Tip
The
stagingplatform is deployed automatically with every update of themainbranch.
Making a new release doesn't publish it automatically in production.
Deployment is done by ArgoCD. ArgoCD checks for the production tag and automatically deploys the production platform with the targeted commit.
To publish, we mark the commit we want with the production tag. ArgoCD is then notified that the tag has changed. It then deploys the Docker image tags specified in the Helm files of the targeted commit.
To publish the release you just made:
git tag --force production v4.18.1
git push --force origin production