Git Branching Model 

 

  • Branching strategy
  • Development
  • Pre-release
  • Release
  • Post-release/Hotfixes
  • Branch naming 
  • QA strategy?
  • Q&A

 

Agenda

Branching Strategy

Main branches

  • master for production releases
  • develop for development. develop branch will progress ahead with new development features

Development & Feature branches

  • Feature branches will be where developers will develop features.
  • They will be forked out from develop branch. 
  • Once dev tested and unit tested, they will be merged back to develop branch
  • Naming convention will be based on JIRA ticket/story ID. eg. AIR-1234

3. code review

Preparing for Release

  • RLS branch will be forked out of develop branch when you know that features to release are ready.
  • RLS branch will be handed over to QA for tests
  • Once QA passes, it will be merged to master for release

QA

Fixes on the Release branch

  • QA finds issues while doing tests on RLS branch
  • Small issues can be fixed directly on RLS branch
  • If something critical, then fork out a branch from RLS. Fix the issue, create a PR and merge it.

Post QA pass, the RLS branch will be merged back to develop so that it has the changes for future development and releases

Staging

  • Once RLS branch is merged to master, it will auto generate a RLS tag eg. v1.0.0
  • QA can deploy this tag to staging and proceed with stage testing.

Production Release

Once stage testing passed the same tag can be used for production release.

Hotfix/Post Production

  • Create a hotfix branch directly from master
  • Fix the issue
  • Create a PR and merge with master. This will be a patch release
  • So label the PR with patch
  • Example Tag generated will be v1.1.2
  • Once tag is generated, QA will follow same process like staging

merged back to develop

Github CI and Releases

Lumi Github project has CI actions set up for

 

 

 

  • Run test suites and create production builds for verification
  • Auto Releases + Tag creation

When a PR is merged with master, a RLS/Tag will be created.

 

To define a release use the correct label in the PR

  • patch - to make a patch release. eg hotfixes. Backward compatible bug fixes vx.x.1
  • minor - for a minor release. Backward compatible new features vx.1.0
  • major - for a major release. Changes that break backward compatibility v1.0.0
  • norelease - for those merges that do not need a release. eg. config changes etc

CI pipeline for Lumi

Github Labels for Release

References

Git branching model

By Joseph K

Git branching model

  • 415