-
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 branch 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 branch 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 - update the counts in the headers
- preview in readthedocs.io
- update Changelog.rst and bump docs/conf.py
- copy-paste from
- auto-update docs (make sure
eb
is using the release branch in all repos)
- also update
- bump version in
mkdocs.yml
in easybuild-docs repo
(to minimize time waiting for tests, once the release notes PR for each repo is merged, the PR to 'main' branch for that repo in the next step can be opened)
-
for repo in
easybuild-framework
easybuild-easyblocks
easybuild-easyconfigs
(in this order)-
open PR to merge release branch (e.g. 4.1.x) into 'main' branch
-
merge PRs to
main
branch once test suites pass in Travis & GitHub CI -
create tags & push to GitHub; example:
git fetch git checkout main git pull origin main git status 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
-
create GitHub releases from tag
-
for
easybuild
repo: copy overview of significant changed (see example https://github.com/easybuilders/easybuild/releases/tag/easybuild-v4.1.1) -
for the other repos, refer to release notes (see https://github.com/easybuilders/easybuild-framework/releases/tag/easybuild-framework-v4.1.1)
-
-
publish release on PyPI from main branch in clean checkout of repository, for example:
./easybuild/scripts/create_source_tarball.sh easybuild-framework 4.1.0 twine upload dist/easybuild-framework-4.1.0.tar.gz
- note: when using an API token to upload to PyPI using
twine
, use__token__
as username, and the API token as password (see also https://pypi.org/help/#apitoken)
- note: when using an API token to upload to PyPI using
-
-
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
-
in
easybuild
repo (only after previous step was completed for all 3 repos):- merge develop into
main
- bump version in setup.py
- publish release on PyPI repository
- open PR to
main
(check that the version bumps and release notes commits are there) - merge PR to main
- create release tags & push to GitHub
- merge develop into
-
test
pip install easybuild
export PREFIX=/tmp/$USER/eb410 mkdir -p $PREFIX pip install --prefix $PREFIX easybuild
-
if everything checks out: announce release
- update news section on website (& remove entry for previous version), see https://easybuild.io
# 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://easybuild.io
-
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 withmain
& bump version to<next version>.dev0
(see alsogit log --patch easybuild/tools/version.py
)git checkout main git pull origin main git checkout develop git pull origin develop git merge main # 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)