- 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
- 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
- Start release branch
- Update CHANGELOG
- Update CHANGELOG
- Build packages, and test them
- Build packages, and test them
...
@@ -18,35 +20,61 @@ weight = 90
...
@@ -18,35 +20,61 @@ weight = 90
- import sample from script to GUI
- import sample from script to GUI
- Start new branch in ba-www, and write release letter (`content/news/release-*.md`)
- Start new branch in ba-www, and write release letter (`content/news/release-*.md`)
#### Finalize release
Finalize bornagain (MRs against release branch):
- Finalize bornagain (MRs against release branch):
- Finalize CHANGELOG
- Finalize CHANGELOG
- CMakeLists.txt
- In hugo/hugo.toml, update `baseURL`, `release_number`, `version_name`, `url_blob`
- In hugo/config.toml, update `baseURL`, `release_number` and `version_name`
- After merger into release branch, set git tag v`x.y`
- Set git tag v`x.y` - reversible freeze
Finalize ba-www (in fresh release branch):
Finalize ba-www (in fresh release branch):
- Finalize release letter
- Update content/documentation.md
- Update content/documentation.md
- Update static/js/version_switch
- Update static/js/version_switch
- In config.toml, update `version_mm`
- In `hugo.toml`, update `version_mm`
-Add release letter
-Hold back MR until everything else is ready
Upload installers and wheels (this makes the release irreversible):
Upload installers and wheels (this makes the release irreversible):
- Build installers and wheels for all Python versions
- Build installers and wheels for all Python versions
- Installers to www@scgbuild:www/ext/ba/files/`version`.`patch`/
- Installers to www@scgbuild:www/ext/ba/files/`version`.`patch`/
- Wheels to PyPI
- Wheels to PyPI
Publish:
#### Publish
- Create release in Jugit
- 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
- As www on @scg3
- In www@scg3:www/ba/public, update `latest` and version link
```
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
- Merge release branch to ba-www => Docs will automatically be updated
Inform users
- Inform users
- Mail to BornAgain mailing list
- Mail to BornAgain mailing list
- For major milestones, mail to external mailing lists (neutron, sa_scat [unsigned mails only!])
- For major milestones, mail to external mailing lists (neutron, sa_scat [unsigned mails only!])
- Update "Latest" section on computing.mlz-garching.de
- Update "Latest" section on computing.mlz-garching.de
#### Continue development
Create next release branch
- Merge changes back into `main`
- Create branch `rx.y`, push to Jugit
- fork new feature branch from `main`
- In Jugit > Settings > Repository > Protected Branches, protect the branch