Tools for versioning, tagging and maintaining OpenStack source code repository forks.
We typically use the following patterns to manage downstream software.
- Branches
- Use
<prefix><release>. For thestackhpcGithub organisation, the prefix isstackhpc/. The release is a lower case name of the OpenStack release. For the Rocky releae, we usestackhpc/rocky. The corresponding upstream branch (e.g.stable/rocky) is periodically merged into the fork. - Versions
- Use
<prefix><upstream version>.<patch>. For thestackhpcGithub organisation, the prefix isstackhpc/. The upstream version is taken from the most recent upstream tag on the stable branch. The patch number is a monotonically increasing number, starting at 1. When a new upstream tag is released, the patch number resets to 1. For example, with an upstream version of3.2.1, we start our versioning atstackhpc/3.2.1.1.
os-cherry-pop.py- Proposes a list of downstream patches to cherry pick for a new release branch. The list is generated based on the downstream patches in a previous release, and accounts for patches that have been merged into the new release. It also looks for newer versions of a patch on later branches.
os-downstream-tag.py- Determines an appropriate version to assign to a downstream fork of an OpenStack project, then creates a tag and pushes it to the downstream repository.
os-upstream-sync.py- Syncs a downstream fork of an OpenStack project with upstream. A new branch is created for the sync, on which the branches are merged, before being pushed to the downstream repository.