2

We have an MVC 5 application that is based on modules (a groupe of functionalities). We also have teams dedicated to each module. So my question is: is it possible to do some sort of partial deploy where we only publish the changes we need?

Maybe is better for me to explain how we are working today:

Right now, when each member of any team commits code we run the CI build and the unit tests and the site gets deployed to a test server where the dev that made the commit tests it's own code and once they are happy with that we deploy that version to testing. But that brings a problem as THAT developer was happy with HIS functionality but other dev may not be at the same stage with other part of the development in other module, so that unwanted change gets deployed to testing.

When I was using ASP.Net Webforms with other project we usually deployed at a Page/Code behind level and it was just fine but now everything (Controllers, helpers, etc.) gets bundled into one assembly and also if we change something on the Bin folder the AppDomain gets recycled so the app basically restarts.

Of course that we are taking care of this testing deploy issues, just by communicating with the rest of the teams before publishing something to test but I was wondering if there is something more that we could do, that's why I thought about a partial deploy.

5
  • You should have a recurring code review meeting. Commented Nov 5, 2015 at 18:53
  • Yes, that's basically what we are doing right now but it really slow us down as some modules are totally independent from the rest and as such should also be able to deploy more frecuently. Commented Nov 5, 2015 at 18:54
  • 2
    just replace assemblies which is altered at the server. Commented Nov 5, 2015 at 18:55
  • The thing is that MVC compiles everything in one same assembly. Commented Nov 5, 2015 at 18:56
  • 2
    No, you can't deploy part of an assembly. If you want your MVC site in multiple assemblies, split it into different projects. Commented Nov 5, 2015 at 20:09

1 Answer 1

3

If you have different teams working on the same project, you should probably take a look on branch strategies. In your particular scenario, branch per feature (or per module) might work fine.

In your case CI has to be enabled on "main" branch. When a team starts a feature, they create a branch. During development they commit to that branch (you can enable automated test execution and deploy to dev on "feature" branches as well). After finishing a feature, they merge changes into "main", CI create a build and deploy it to server. However there is one drawback, possible conflicts during merging, so you need to make sure that your teams commit to main branch as often as possible to minimize these problems.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.