Release Process¶
Release process includes the following:
- Create release milestones in Github for the following repositories
- Team identifies target features for release, creates issues, and assigns milestones to associated issues
- Features are implemented, tested, and documentation updated either on
master
or a designated feature branch - Changes are merged to
stable
branch - Stable branch is updated with any version changes, if applicable
- Release candidate is created by tagging the
stable
branch (v1.0-rc1) - Release candidate is tested
- Release notes are created and added to documentation
- Final release is created by tagging the
stable
branch (v1.0) - Install release to production instance
- Announce release to community
Detailed release process¶
- For all repos, merge or cherry-pick commits from
master
tostable
, bump versions, and create release tag. - Wait for autobuilds of Docker images, then deploy to staging.
- Publish releases via github
- Deploy tagged version to staging
- Testing/smoke test
- Deploy to production
- globus_handler
- Bump version in plugin.json (master/stable)
- girder_wt_data_manager, wt_home_dirs, wt_versioning, virtual_resources
- Bump version in plugin.json (master/stable)
- girder_wholetale
- Bump version in plugin.yml (master/stable)
- Pin version of gwvolman in requirements.txt
- gwvolman
- Bump version in setup.py (master/stable)
- Pin version of girderfs in requirements.txt
- girder
- Clone repo with submodules
- In stable branch, checkout version tag for each plugin, commit
- wt-design-docs:
- Add release notes
- Update ISSUE_TEMPLATE/test_plan.md
Release steps used for v0.6
# Clone the repos
# Bump version on master
# Merge to stable
# Bump version on master
# Release
# repodocker_wholetale
# girderfs
# gwvolman
# virtual_resources
# wt_versioning
# girder_wt_data_manager
# globus_handler
# wt_home_dirs
# girder_wholetale
# ngx-dashboard
# wt-design-docs
# terraform_deployment
version_stable="1.0.0"
tag_stable="v1.0"
version_master_python="1.1.0dev0"
version_master_plugin="1.1.0"
# virtual_resources
git clone https://github.com/whole-tale/virtual_resources
cd virtual_resources
sed -i.bak "s/^version: .*/version: ${version_stable}/g" plugin.yml
git add plugin.yml
git commit -m "Bump version"
git checkout stable
git merge master
git tag ${tag_stable}
git push origin stable
git push origin --tags
git checkout master
sed -i.bak "s/^version: .*/version: ${version_stable}/g" plugin.yml
git add plugin.yml
git add plugin.json
git commit -m "Bump version"
git push origin master
# wt_versioning
git clone https://github.com/whole-tale/wt_versioning
cd wt_versioning
sed -i.bak "s/^version: .*/version: ${version_stable}/g" plugin.yml
git add plugin.yml
git commit -m "Bump version"
git checkout stable
git merge master
git tag ${tag_stable}
git push origin stable
git push origin --tags
git checkout master
sed -i.bak "s/^version: .*/version: ${version_stable}/g" plugin.yml
git add plugin.yml
git add plugin.json
git commit -m "Bump version"
git push origin master
# girder_wt_data_manager
git clone https://github.com/whole-tale/girder_wt_data_manager
cd girder_wt_data_manager
sed -i.bak "s/^version: .*/version: ${version_stable}/g" plugin.yml
git add plugin.yml
git commit -m "Bump version"
git checkout stable
git merge master
git tag ${tag_stable}
git push origin stable
git push origin --tags
git checkout master
sed -i.bak "s/^version: .*/version: ${version_stable}/g" plugin.yml
git add plugin.yml
git add plugin.json
git commit -m "Bump version"
git push origin master
git clone https://github.com/whole-tale/wt_home_dirs
cd wt_home_dirs
# Same steps as wt_sils
git clone https://github.com/whole-tale/globus_handler
cd globus_handler
# Same steps as girder_wt_data_manager
git clone https://github.com/whole-tale/girderfs
cd girderfs
sed -i.bak "s/__version__ = '[^']*'/__version__ = '${version_stable}'/g" ./girderfs/__init__.py
git add ./girderfs/__init__.py
git commit -m "Bump version"
git checkout stable
git merge master
git push origin stable
git tag ${tag_stable}
git push origin --tags
git checkout master
sed -i.bak "s/__version__ = '[^']*'/__version__ = '${version_master_python}'/g" ./girderfs/__init__.py
git add girderfs/__init__.py
git commit -m "Bump version"
git push origin master
git clone https://github.com/whole-tale/gwvolman
cd gwvolman
# Pin girderfs version in requirements.txt to ${tag_stable}
sed -i.bak "s/version='[^']*',/version='${version_stable}',/g" setup.py
git add setup.py requirements.txt
git commit -m "Bump version"
git checkout stable
git merge master
git push origin stable
git tag ${tag_stable}
git push origin --tags
git checkout master
# Pin girderfs version in requirements.txt to master
sed -i.bak "s/version='[^']*',/version='${version_master_python}',/g" setup.py
git add setup.py requirements.txt
git commit -m "Bump version"
git push origin master
git clone https://github.com/whole-tale/girder_wholetale
cd girder_wholetale
# Pin gwvolman version in requirements.txt to ${tag_stable}
sed -i.bak "s/^version: .*/version: ${version_stable}/g" plugin.yml
git add plugin.yml requirements.txt
git commit -m "Bump version"
git checkout stable
git merge master
git push origin stable
git tag ${tag_stable}
git push origin --tags
git checkout master
# Pin gwvolman version in requirements.txt to master
sed -i.bak "s/^version: .*/version: ${version_master_plugin}/g" plugin.yml
git add plugin.yml requirements.txt
git commit -m "Bump version"
git push origin master
git clone --recurse-submodules https://github.com/whole-tale/girder
cd girder
git checkout stable
git merge master
cd plugins/globus_handler
git checkout ${tag_stable}
cd ../plugins/wholetale
git checkout ${tag_stable}
cd ../wt_data_manager/
git checkout ${tag_stable}
cd ../wt_home_dir/
git checkout ${tag_stable}
cd ../wt_sils/
git checkout ${tag_stable}
cd ..
git commit -a -m 'Bump version'
git push origin stable
git tag ${tag_stable}
git push origin --tags
git clone https://github.com/whole-tale/dashboard
cd dashboard
sed -i.bak "s/\"version\": \"[^\"]*\"/\"version\": \"${version_stable}\"/g" package.json
git add package.json
git commit -m "Bump version"
git checkout stable
git merge master
# Manually merge conflicts
git commit
git push origin stable
git tag ${tag_stable}
git push origin --tags
# Update release notes
git clone https://github.com/whole-tale/wt-design-docs
cd wt-design-docs
sed -i.bak "s/version = '[^']*']/version = '${version_stable}'/g" conf.py
git add conf.py
git commit -m "Bump version"
git push origin master
git tag ${tag_stable}
git push origin --tags
# Publish releases via github
# Deploy tagged version to staging
# Testing/smoke test
# Deploy to production