Updated 27 Jul 22
Terminology
- Release: A tagged release which is visible in git as tag and in github as release
- Hotfix: same as a release but modifies a single master version without side effects
- Release branch: a branch in a repository, based on develop.
Dependency tree
Release procedure
- Repository R needs to release a new version V The name of the release branch is “R-vV” pyprecice-v3.1.2.1
- Prepare the release in the branch (bump version etc)
- Find R in the dependency tree and the subtree with root R
- Every R’ in subtree (R != R) needs to create a release branch with the name deduced above. The branch should be based on develop of the repository R’. The base commit of the release branch is the last commit to be released (feature freeze).
- Run systemtests with the subtree of R using release branches and the rest using
- develop (do all the develop versions still work together)
- master (do all the releases still work together)
- Make sure everything is working
- Release from R down to the leaves of the dependency tree if necessary.
Hotfix procedure
- Repository R needs to release a new version V The name of the release branch is “R-vV” pyprecice-v3.1.2.1
- Prepare the release in the branch (bump version etc)
- Find R in the dependency tree
- Run systemtests with R using release branches and the rest using master
- Make sure everything is working
- Release R
Umbrella / distribution
- twice per year, following the preCICE feature releases.
- last precice/precice release branch (off every repo) + concrete solver versions.
- Forms the base of the Vagrant box
Note:
Note: this means repositories don’t all need versions.
Example
Goal: Release pyprecice version 1.2.3
.
Root repository: precice/pyprecice
Name of release branch: pyprecice-v1.2.3
- Create branch
pyprecice-v1.2.3
fromprecice/pyprecice:develop
- Prepare the release (bump version etc)
- Create branch
pyprecice-v1.2.3
in repositories:a
,b
- Run systemtests and fix errors until none appear
- for develop version
- for master version
- Release the repositories if required.