I am working on the project where currently we have following three fixed branches
- Develop - The code is deployed to development environment. It's a base branch for anyone who want to add new feature.
- Release - Deployed in QA environment, and QA can start testing on.
- Master - Deployed to Production environment and available to clients.
And we have two more dynamic branches, feature and hotfix.
Anyone wants to start new development or bugfix, forks a new
feature
from thedevelop
branch, then then creates a pull request.Once development is done it's testing in Development environment from
develop
branch it then creates a merge request forrelease
branch.QA deploys the
release
branch on Test environment and start testing, once testing is done it's merged to master and then deployed to production.
This all works well for most of the part. However, it has following problem: not every feature in QA (release branch) is tested and ready for deployment (merge to master) at the end of the release. And so we are not sure how to create a pull request as it will select all the commits.
I am thinking GitHub releases might be a solution for this. I can create a new release with which ever feature is ready for deployment and then merge these releases with master branch.
However, what I am not sure is when to deploy to production, from releases or from master?