# Release process ## Publish on git - Update the version number in the package.json file on the `main` branch. - Push the `main` branch: `git push main`. - Checkout the `builds` branch and merge from `main` with `git checkout builds && git pull upstream builds && git merge -X theirs main` (which will always take `main` changes). - Run `yarn release`. - Check `git status`, unstage unwanted changes, and commit with `Build;` in the commit message. - Run `git tag 0.14.0` with the version number. - Push the `builds` branch. - Push the tag with `git push upstream 0.14.0` (upstream being the main repo's URL). Make sure you don't have a branch called `0.14.0` that could conflict. ## Publish on npm - Just after this on the same branch, run `npm publish` (make sure there are no local files that should not be published and are not ignored by the _.npmignore_ file with `npm publish --dry-run`). - Test the npm release: - install with `npm -g install --omit=dev --prefix /tmp kresus`. - run Kresus from there: - If you use sqlite for testing, install it there too: `npm -g install --omit-dev --allow-script=better-sqlite3 --prefix /tmp better-sqlite3` - Then run Kresus with `/tmp/bin/kresus -c /path/to/config.ini`. ## Publish on Docker hub _This doesn't need to run from any branch in particular, since the script to build the Docker stable image will use the latest version of Kresus pushed to npm._ - Run `yarn docker:release` (ensure it doesn't use cached images). - Test the docker build: - `docker run -ti -p 9876:9876 -v /path/to/config.ini:/opt/config.ini bnjbvr/kresus` - if you've set up the testing config to use better-sqlite3, you'll need extra steps: - In a new shell, `docker exec -ti $container bash` - `yarn global add better-sqlite3` - Ctrl+D to exit the bash shell - restart the container - it's available for testing on port 9876 - Make sure there is no extra file not specified in the `.gitignore` or `.dockerignore` in your current directory, otherwise it will be published in the docker image. - `docker tag bnjbvr/kresus:latest bnjbvr/kresus:0.14.0` with the right version number. - `docker login` with your credentials - `docker push bnjbvr/kresus:latest && docker push bnjbvr/kresus:0.14.0` ## Website and demo - Write a blog post for the release: - check commits. - don't talk too much about implementation details unless a lot of work has been done in a particular area, e.g. tests, migrating DB, etc. - give visibility to non-technical contributions too. - format the blog post so all images etc. are served locally - add Pelican metadata. - The demo on demo.kresus.org will be updated automatically during the night. ## Extra communication - Create social media messages for Mastodon and publish them with a link to the blog post. - Ideally, re-publish social media updates a few hours / days later. - Let package maintainers know about the update, and try to give instructions to make it easier to upgrade their packages (ArchLinux / YNH). - Update the latest stable version number in the topic of the Matrix room.