TeamCity - CI w/ Multi-project .NET solution using SOA build and delivery issues I have a multi-project .NET solution that I'm trying to set-up with TeamCity (TC) for CI and Octopus Deploy (OD) for CD.

I originally set-up TC to pull the latest from SVC, build the solution and deploy it as a .zip on the Dev server, but I've been having issues trying to deploy the solution to IIS with OP. I was informed that I should instead have TC take the solution and create multiple packages from it for OP to pick-up. I currently don't know how to do this.

I have the following build steps:



And I have this in my General Settings Publish Artifact settings:



Visual Studio solution set-up (Blue shows the projects that make up the entire application we want to deploy. Green boxed will be the separate packages, BLL, Services and Repository because of project dependency get rolled up into the API project.):



I have manually deployed the solution in IIS, below is how it needs to deploy in IIS:



The root site is a .NET project using MVC that communicates, hubs is a Signal-R project and API has the repository project and services project under it. So essentially The root website is a client, it communicates can only see API and hubs and any communication to the repository project would go through the API project first, it's supposed to be using a service-orientated architecture.

The goal is that TC should spit out 3 packages, one for the root website, one for the Signal-R project and one for the API which holds several projects but all projects are entirely in a single solution and this isn't something that I can get around for the time being. Once TC can do that I will need to set-up OD to deploy each of those packages to their required locations (which should hopefully be pretty simple).

Any information/assistance with this is greatly appreciated as I do not have a Dev-Ops background and this is the first time I've had to set-up this kind of a project with TeamCity.

Kind regards.
So you need to create packages for each of the three sites so that you can deploy each one individually.

The first step is to create a .nuspec file for each of the IIS websites you want to package:


Install OctoPack and read the entire article
Create three empty text files next to the .csproj, give it the same base filename as the .csproj, thus if it is MyApp.API.csproj you want to create an empty text file called MyApp.API.nuspec.
In each of these .nuspec files paste in the following template:

&lt;?xml version="1.0"?&gt;
&lt;package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"&gt;
&lt;metadata&gt;
    &lt;id&gt;Sample.Web&lt;/id&gt;
    &lt;title&gt;Your Web Application&lt;/title&gt;
    &lt;version&gt;1.0.0&lt;/version&gt;
    &lt;authors&gt;Your name&lt;/authors&gt;
    &lt;owners&gt;Your name&lt;/owners&gt;
    &lt;licenseUrl&gt;http://yourcompany.com&lt;/licenseUrl&gt;
    &lt;projectUrl&gt;http://yourcompany.com&lt;/projectUrl&gt;
    &lt;requireLicenseAcceptance&gt;false&lt;/requireLicenseAcceptance&gt;
    &lt;description&gt;A sample project&lt;/description&gt;
    &lt;releaseNotes&gt;This release contains the following changes...&lt;/releaseNotes&gt;
&lt;/metadata&gt;
&lt;/package&gt;

Customize the template for each of your projects.
Update TeamCity to add /p:RunOctoPack=true to the msbuild command line
Publish your packages with the following msbuild arguments:


/p:OctoPackPublishPackageToHttp=http://your.octopusserver.com/nuget/packages
/p:OctoPackPublishApiKey=API-ABCDEFGMYAPIKEY



You may have to play around a bit, but essentially the above is taken from this article so treat that as your bible.