Recommendations for turning multiple solutions / projects into one msdeploy package?

Our main site is a collection of 10 separate ASP.NET projects and applications. Currently, ten separate msdeploy jobs are used for full deployment on the new server; each application is built, configured (using configuration transformations) and packaged, but we do not have a solution for deploying all packages in a single operation.

I can see several possibilities that may work in this scenario, but I would like to hear from someone who has succeeded - or failed - in creating something like this:

  • A folder with full packages and deploy.cmd scripts with a "master script" that will call each individual script application in turn and deploy this application to the target server.

  • Using an intermediate server in which we deploy the latest build of each package from TeamCity using the production configuration, but then use msdeploy to capture this server in one huge msdeploy ZIP package, which is then deployed on each production server as a single msdeploy step.

  • Creating a single huge Visual Studio solution that references any project in our codebase (perhaps via svn: externals?) Compiles and cross-references ALL, and therefore supports the use of a single msbuild job to create a huge monolithic package containing the whole our code base built from the latest version in the control source and configured for the target environment.

I studied Troy Hunt perfectly, β€œYou Deploy It Wrong, ” and Scott Hanselman, β€œWeb Deployment Made It Awesome,” but I think I'm looking for something that goes beyond any of these approaches that includes several projects and applications, not necessarily creating them from the source in one step - any ideas?

+4
source share
2 answers

We had a very similar scenario in our company, and we created the installation package using WIX . The configuration conversion occurs during installation, so now we create a single assembly, and then deploy it to each server through the MSI installation package. WIX is very flexible, but also has a steep learning curve. We modify our configs using our own action, but this can be done in other ways.

We use Team Foundation Server and MSBuild to complete our builds. This is quite straightforward, but I put some work into it to properly configure as many projects and solutions as we had.

Other options that we reviewed, and even tried:

  • InstallShield is not flexible enough.
  • Writing your own C # Install - WIX already thought about everything we tried to do so, why reinvent the wheel?
  • I just say that all this is necessary and we set things up manually - 2 or 3 months of development on WIX and MSBuild easily paid for the hours that we spent last year on doing things manually.

I think the deployment tools built into Visual Studio were designed for a single application with multiple deployments. It looks like you need external tools as well as development efforts to speed up the deployment and eliminate the need to do everything manually. That's why we invested in the above solution, and it really paid off.

+2
source

I will choose Installshield.

  • Recent versions of Installshield support the creation of webdeploy packages.
  • You can define IIS configurations for all applications in one project and create releases if you want to create packages as a separate or one separate version for all web applications.
  • The Installshield project has an object model in which you can automate almost every task from build scripts, and projects are simple XML files that you can also modify in automation scripts, if necessary
  • Developers can modify WixXML projects individually, and you can add these projects as merge modules to their installation projects through their build scripts with minor changes to the xml project (at least in the 2011 version, this part is not supported through installshield, but can do)
  • You do not even need to modify Visual Studio projects for groups of web applications that follow the same template, or manually modify the installshield project to add new web applications for these cases, you can create packages for new web applications without intervention once installing your build scripts for the task of automating the installation project based on the root VS build output
-1
source

Source: https://habr.com/ru/post/1440805/


All Articles