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 branchChanges are merged to
stable
branchStable 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