Skip to content

EnTK Release process

Vivekanandan (Vivek) Balasubramanian edited this page Apr 1, 2019 · 4 revisions

EnTK Release Process

This document covers the steps to make a monthly release of EnTK. EnTK is released to the PyPi and Conda package repos.

At a high level, there are three steps associated with each release:

  1. Creating milestones
  2. Branch management
  3. Release

Let's take a look at each of the steps in detail.

Creating milestones

Each release is associated with a milestone. As such, there is a new milestone every month. It is recommended to use either the version number of the next release or month+year to identify these milestones.

  • Create a milestone by going to the Issues tab and clicking on the milestone button under the tab. Give the milestone an appropriate name. A due date can be added as well (1st Tuesday of a month).
  • Go through the list of open issues, identify issues that can be fixed and tested for the next release. Tag these issues with the current milestone.

Priorities

Use the priority of the issues to guide which issues need to be part of the milestone. Priorities are usually assigned by the developers/managers at the time of issue creation, but can be revisited when creating a milestone.

Version

Version is of the format major.minor.patch

Branch management

Features and fixes

We use the same branching model as in RADICAL Pilot. Usually each issue requires a "feature/" or "fix/" branch, branched off devel. If multiple issues are related or are very small issues, they can all be addressed in one branch.

"feature" branches are named as feature/<new-feature-name> whereas the "fix" branches are associated directly with issues as fix/issue_123 or fix/issue_123_456.

Please follow these steps for every feature or fix branch:

  1. Implement your feature or fix in the specific branch and create a PR towards devel.
  2. Ensure that any new code is tested (in general the test coverage should be 85%)
  3. Ensure that you meet the coding policy and quality as decided by the group.
  4. Assign review requests to other developers in the team, discuss and fix (if required) as appropriate. All reviewers should accept the PR.
  5. Merge with devel.

Both the test suite and code quality checker should be automatically triggered on every PR (and every push to a PR/branch).

We will discuss merging devel with master below in the Release section.

Hot-fixes

Hot fix releases are required when a released version requires changes. These changes are usually small.

NOTE: If the required change is large, please consider it as feature or fix and follow the steps above, but you release ASAP instead of a monthly release.

Create a "hotfix" branch off master with the name hotfix/<very small description of the issue>

Please follow these steps for every hotfix branch:

  1. Implement your fix in the hotfix branch and create a PR towards master.
  2. Ensure that any new code is tested (in general the test coverage should be 85%)
  3. Ensure that you meet the coding policy and quality as decided by the group. In the case of hotfix, depending on the urgency there might be scope of relaxing coding policy for the hotfix. Please discuss with the team.
  4. Assign review requests to other developers in the team, discuss and fix (if required) as appropriate. All reviewers should accept the PR.

We will discuss merging hotfixes with master below in the Release section.

Release

As a pre-requisite for a release, you should have either a fully tested devel branch or hotfix branch. Merge your branch with master, this will trigger another round of tests which should pass. Once merged, perform the following steps:

  1. Increment the version in the VERSION file of Ensemble Toolkit found at root of the repository.
  2. Create a tag with the version number and push to remote.
  3. To push to PyPi, execute the following commands:
virtualenv release
source release/bin/activate
pip install twine
python setup.py sdist    # this would create a tarball of the form radical.entk-<version number>.tar.gz
twine upload --skip-existing dist/<tarball name>
<will be prompted for PyPi username and pwd>
  1. Once you have pushed to PyPi, this will automatically create a PR in the EnTK conda feedstock. If all tests passed, merge the PR or address the test failures.
  2. Once released, sync the master branch with other appropriate branches to minimize divergence from the released version.

FAQ