Issue, Branch and Release Processes

This page describes the issue and code branch management convention that OppiaMobile follows, and the release process/checklist.

Issues, Branches and Pull Requests

Issue branches should be related to only one issue, and be based on the current release branch. This avoids situations where issue branches cannot be merged into the release branch as they are dependent on other issue branches.

There may be some cases where multiple issues are addressed on the same issue branch, but then these should be very closely related issues.

Similarly, pull requests should be related to one issue (and issue branch).

Pull requests should include new/updated documentation and automated tests. The documentation and tests are part and parcel of the technical development work for any issue.

Branch Management

  1. A new dev release branch is created (e.g. ‘1.2.3’) - this is the branch to which all fixes and issues will be merged into for testing, before being merged into the master branch.

  2. A new branch is created for each issue to be fixed in the development cycle (e.g. ‘issue-567’)

  3. Code is developed on the issue branch

A couple of exceptions to the above process:

  1. very minor fixes (that don’t warrant their own issue branch) may be applied directly to the release branch

  2. database updates/re-structuring will be applied directly on the release branch. This saves conflicts if there are database updates on multiple issue branches

Server Release Process/Checklist

Before making pull request from issue branch to release branch

  1. Add/update unit/automated tests

  2. Merge the release branch into the issue branch - so any potential conflicts can be dealt with in the issue branch

  3. Run Django tests framework and confirm all tests are passing [Testing OppiaMobile]

  4. Run Sonar test framework [SonarQube Set Up]

  5. Check code for PEP8 compliance [PEP8]

  6. Add/Update documentation for any new or changed functionality/processes/ settings

  7. Update the relevant GitHub project to show the issue is for review

Merging issue branch into release branch

  1. Merge code in (as above and resolve and conflicts from other branches)

  2. Run Django tests framework and confirm all tests are passing

  3. Run Sonar tests framework

  4. Update release notes (adding issue resolved)

  5. Close issue on Github

Merging release branch into master, for final release

  1. Merge code in (as above and resolve and conflicts from other branches)

  2. Run Django tests framework

  3. Run Sonar tests framework

  4. Run QA tests (Quality Assurance Process & Checklist)

  5. Date the release (on release notes)

  6. Tag the release in git

  7. Update roadmap

  8. Release…

  9. Create a new release branch - based from the master, with the updated version number

App Release Process/Checklist

Before making pull request from issue branch to release branch

  1. Add/update unit/automated tests

  2. Merge the release branch into the issue branch - so any potential conflicts can be dealt with in the issue branch

  3. Run tests framework and confirm all tests are passing [Testing OppiaMobile]

  4. Add/Update documentation for any new or changed functionality/processes/ settings

  5. Update the relevant GitHub project to show the issue is for review

Merging issue branch into release branch

  1. Merge code in (as above and resolve and conflicts from other branches)

  2. Run tests framework and confirm all tests are passing

  3. Update release notes (adding issue resolved)

  4. Close issue on Github

Merging release branch into master, for final release

  1. Merge code in (as above and resolve and conflicts from other branches)

  2. Run tests framework

  3. Run QA tests (Quality Assurance Process & Checklist)

  4. Date the release (on release notes)

  5. Tag the release in git

  6. Update roadmap

  7. Release…

  8. Create a new release branch - based from the master, with the updated version number