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 to stable, 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