0
votes

We have 9-10 applications in our project. Until now, there wasn't a defined TFS structure and no release management. We need to setup one.

We are stuck in middle of it right now with some issues about the process to be followed for every release.

This is what we have planned till now. We create a main branch which will have the current production source code. For managing the releases, we will create a "releases" folder where we will create a separate branch for every release. All the bug fixes and developer check ins will be done on this branch.

Currently, for deployment purpose, we are deploying the developed/bug fixed code to QA. After QA validation, we copy the published code from the QA environment to the Staging Servers. After stage validation, the published code is copied to production.

Now, We are unable to figure out how/merge do we merge the release code to main line. The client's requirement is that mainline code should be the one from where we published and deployed to QA. We were earlier planning to deploy from the release branch and merge the release branch to main once all the validation and the production move is complete.

But this means that if we incur any merging issues, the main line code could be buggy or unreliable and we could face major issues in case of any hot fixes/further releases.

Please suggest a strategy that would be suitable for my requirements.

Thanks in advance.

1
If this gets closed email me on [email protected] - MrHinsh - Martin Hinshelwood

1 Answers

-1
votes

You should be lookin towards more of a binary release model than a source release model. If you have to merge code then everything needs retested, which can be expensive.

If you were in Git I would recommend Git Flow but since you seam to be in TFVC you should look at branch by release.

Create a branch for your current codeline, say R1. Then work on there untill R1 is code complete. Branch to R2 to continue adding new features.

R1 can now be stabalised, released, and then supported at your measure maintining one continuous branch with one continuous build creating binaries. You create a binary release pipeline in Release Management and off you go.

R2 is then where new features are added and you create a separate build and binary pipleine for you new version untill you are code complete there.