-
Notifications
You must be signed in to change notification settings - Fork 144
Release management
-
revisit target date
- aim for a release every ~6-8 weeks
-
determine version of next release
- patch release (
4.x.y
->4.x.(y+1)
)- bug fixes + software updates
- minor update release (
4.x.y
->4.(x+1).0
)- (significant) enhancements, bug fixes, software updates
- major update (
4.x.y
->5.0.0
)- backwards-incompatible changes
- patch release (
-
update
next release
milestone to mention actual (final) version of next release -
add new
next release
milestone -
clean up milestones for next release
- start focusing on bug fixes or important enhancements
- move other issues/PRs to either
4.x
or new milestone for next-next release
-
once
develop
is considered ready for release (except for unexpected bugs to fix), either:- start a new release branche from
develop
(if it does not exist yet)git fetch origin git checkout develop git pull origin develop git checkout -b 4.1.x git push origin 4.1.x
- update existing release branch with current
develop
(if it already exists)git fetch origin git checkout develop git pull origin develop git checkout 4.1.x git merge develop git push origin 4.1.x
- start a new release branche from
-
start regression test as soon as release branches are considered complete
-
keep an eye out for failures, open issues & follow up (fix for this release?)
-
if any problems pop up that warrant bug fixes, open a PR to target the release branch (
4.1.x
) rather thandevelop
- scan merged PRs since last release for missing/wrong labels and milestones
- first in
RELEASE_NOTES
in each repository (excepteasybuild
) - bump version in
version.py
in each repository (excepteasybuild
) - target PRs to release branches
4.1.x
- once those PRs are merged, in the
easybuild
repo:- also update
easybuild/docs/Release_notes.rst
- copy-paste from
RELEASE_NOTES
+ fix syntax & formatting - preview in readthedocs.io
- copy-paste from
- auto-update docs
- also update
-
open PRs to merge release branches (e.g.
4.1.x
) intomaster
in each repo- take into account that easyblocks repo may require PR in framework repo to be merged first (similar for easyblocks/easyconfigs)
-
merge PRs to
master
once test suites pass in Travis & GitHub CI -
open PR to
master
to bump versions insetup.py
(anddocs/conf.py
?) ineasybuild
repo, merge when tests pass -
create release tags & push to GitHub for all 4 repos; example:
git checkout master git pull origin master git log -n 2 git tag -a easybuild-framework-v4.1.0 -m "easybuild-framework version 4.1.0 (release notes are available at https://easybuild.readthedocs.io/en/latest/Release_notes.html)" git push origin easybuild-framework-v4.1.0
-
publish releases on PyPI from master branch in clean checkout of repository, for example:
git status | grep "working tree clean" python setup.py sdist twine upload dist/easybuild-framework-4.1.0.tar.gz
- these must be done in order (framework - easyblocks - easyconfigs - easybuild)
-
open PR for easyconfig file for latest EasyBuild release (required for
eb --install-latest-eb-release
)- re-test
eb --install-latest-eb-release
after it gets merged - this can be done before publishing release for
easybuild
repo
- re-test
-
re-test bootstrap script
export PREFIX=/tmp/$USER/eb410 mkdir -p $PREFIX cd $PREFIX curl -O https://raw.githubusercontent.com/hpcugent/easybuild-framework/develop/easybuild/scripts/bootstrap_eb.py MODULEPATH= PYTHONPATH= python bootstrap_eb.py $PREFIX
-
if everything checks out: announce release
- update news section on website (& remove entry for previous version), see https://easybuilders.github.io/easybuild
# in easybuild repo git checkout gh-pages git pull origin gh-pages vim index.html git add index.html git commit -m "EasyBuild v4.1.0" git push origin gh-pages
- EasyBuild mailing list
- highlight important/major/noteworthy changes
- overview of # contributors & merged PRs
- info on updating
- update channel message in Slack/IRC
- update news section on website (& remove entry for previous version), see https://easybuilders.github.io/easybuild
-
update release schedule at https://github.com/easybuilders/easybuild/wiki/Release-schedule
-
update OpenHPC component
- see
components/dev-tools/easybuild/SPECS/easybuild.spec
@ https://github.com/openhpc/ohpc
- see
-
sync up
develop
branch withmaster
& bump version to<next version>.dev0
(see alsogit log --patch easybuild/tools/version.py
)git checkout master git pull origin master git checkout develop git pull origin develop git merge master # easybuild-framework vim easybuild/tools/version.py # easybuild-easyblocks vim easybuild/easyblocks/__init__.py # easybuild-easyconfigs vim setup.py git add <path> git commit -m "bump version to <version>dev"
-
close release milestones (only when 100% complete!)
- close or move any leftover issues/PRs to milestone next release)
-
set initial target date for next release
-
celebrate with a beer (or two)