diff --git a/hugo/content/dev/release.md b/hugo/content/dev/release.md index ffae622b673c1e8cbdd91048177899ca2c8a0ef1..468a6c2f46564ec8be1932cf6a80b4c8043d2885 100644 --- a/hugo/content/dev/release.md +++ b/hugo/content/dev/release.md @@ -7,8 +7,10 @@ weight = 90 #### Test phase +- Decide whether it's a minor or major increment, and set version number in `CMakeLists.txt` +- Decide and set recommended_python_minor in `hugo/hugo.toml` - Declare feature freeze -- Release new versions of library dependencies (heinz, ff) if they have changed. +- Release new versions of library dependencies (heinz, ff) if they have changed - Start release branch - Update CHANGELOG - Build packages, and test them @@ -18,35 +20,61 @@ weight = 90 - import sample from script to GUI - Start new branch in ba-www, and write release letter (`content/news/release-*.md`) +#### Finalize release -Finalize bornagain (MRs against release branch): -- Finalize CHANGELOG -- CMakeLists.txt -- In hugo/config.toml, update `baseURL`, `release_number` and `version_name` -- Set git tag v`x.y` - reversible freeze +- Finalize bornagain (MRs against release branch): + - Finalize CHANGELOG + - In hugo/hugo.toml, update `baseURL`, `release_number`, `version_name`, `url_blob` +- After merger into release branch, set git tag v`x.y` Finalize ba-www (in fresh release branch): +- Finalize release letter - Update content/documentation.md - Update static/js/version_switch -- In config.toml, update `version_mm` -- Add release letter +- In `hugo.toml`, update `version_mm` +- Hold back MR until everything else is ready Upload installers and wheels (this makes the release irreversible): - Build installers and wheels for all Python versions - Installers to www@scgbuild:www/ext/ba/files/`version`.`patch`/ - Wheels to PyPI -Publish: +#### Publish + - Create release in Jugit -- In www@scg3:ba: for hotfix, update versioned repository (in subdirectory repo, checkout release branch and run make, make figures etc, hugo); for major release, create new versioned repository -- In www@scg3:www/ba/public, update `latest` and version link +- As www on @scg3 + ``` + cd ~/ba + cp -pr <old_version>/repo <new_version>/repo; # for hotfix, use extant directory + git fetch --all --prune + git checkout <release_branch> + git pull --all + cd build + cmake .. + make + ctest + make figures + cd ../hugo + hugo + cd ../.. + ln -si repo/hugo/public hugo-public + cd ~/www/ba/public + ln -si /home/www/ba/VERSION/hugo-public VERSION + rm latest + ln -si VERSION latest + ``` - Merge release branch to ba-www => Docs will automatically be updated -Inform users -- Mail to BornAgain mailing list -- For major milestones, mail to external mailing lists (neutron, sa_scat [unsigned mails only!]) -- Update "Latest" section on computing.mlz-garching.de +- Inform users + - Mail to BornAgain mailing list + - For major milestones, mail to external mailing lists (neutron, sa_scat [unsigned mails only!]) + - Update "Latest" section on computing.mlz-garching.de + +#### Continue development -Create next release branch -- Create branch `rx.y`, push to Jugit -- In Jugit > Settings > Repository > Protected Branches, protect the branch +- Merge changes back into `main` + - fork new feature branch from `main` + - merge release branch + - restore "git-main" in `hugo/hugo.toml` + - update version number in `CMakeLists.txt` + - create MR against `main`