jeudi 1 juin 2017

Git branching model for two target environments

I'm new to a php project which is versioned via git. The development is distributed to two to four developers who work on their features in separated branches. There are two eternal branches, master which is a version which can be deployed to production and develop where the current development is integrated and deployed to a test environment.

When a feature is ready for testing, it is merged into a develop branch deployed to a test server and the client is going to test the features. This testing process often takes days, sometimes weeks until a feature is approved. When a feature is approved, it is expected to be integrated into the production system immediately.

Since this testing and feedback cycle is pretty slow, the released version on test and production stage are extremely different. It makes it hard to release features to production because it's not possible to merge develop into master - this would introduce commits/features into master which aren't approved by the customer. So every feature branch has to be merged into develop and after approval explicitly into master.

The slow testing process has one more disadvantage, some features may introduce changes to the same file, which are then integrated so they can be tested on the test server. Which makes it necessary to merge both features to deploy them to the test server and then split them as soon as one of the features is approved and should be deployed to production.

What do you think is a good approach to this situation? Should we batch features and use a fixed release cylce, e.g. once a week?

How can we develop and release features ad-hoc, which branching model would be more appropriate? Or do you think it is totally fine to merge feature branches into develop and then into master - never merging develop into master?




Aucun commentaire:

Enregistrer un commentaire