8

I am aware of the de facto and popular tool choices for various programming languages such as Go, NodeJS, Java, Python etc. However, I do not know what toolchain is reasonable or even (hot) in the .NET world. I have heard that people use Octapus deploy, is this still a valid choice? Is NuGet still the defacto package manager? What about code inspection, automatic QA etc.?

I would like to get a feeling of the complete toolchain for .NET and what is popular right now when considering development, automatic test, and delivery.

11

Somewhat stealing from Ian Margett's answer as the architecture is common amongst most Microsoft/.NET development organizations, the high-level target operating model for looks something like this:

.NET Target Operating Model

The goal is to create a Continuous Deployment pipeline, using existing off-the-shelf software, namely TeamCity, ProGet, SonarQube and Octopus Deploy:

  • GitHub is the source code management tool, however, it could be BitBucket or Visual Studio Team Services. The branching model and code review process are out of scope at this high level.
  • TeamCity is chosen as the Build System due to its tight integration with Octopus Deploy and good all-round support for .NET, msbuild and PowerShell. TeamCity is also used as the orchestrator of deployments in Octopus Deploy.
  • ProGet is the package management solution which both stores Octopus Packages and proxies public package/image repositories. The rationale for not using the built-in TeamCity NuGet store is purely for scalability reasons.
  • SonarQube provides continuous code quality management and reports are published as part of the TeamCity build outputs.
  • Octopus Deploy is used as the deployment tool for both infrastructure and code into the target platforms.

I've seen this broad approach implemented across two companies and successfully implemented it in two additional companies - in the most recent case we swapped TeamCity out for AppVeyor which worked, albeit a little painful when setting up firewall rules.

6

You mention a few different categories in your toolchain for .NET. Yes, NuGet is still the default package style – and a lot of people use a Universal Package Manager to manage their NuGet feeds.

For Deployment, Octopus is indeed an option for pushing out artifacts, but it doesn’t enable some of the other aspects you were talking about.

An ARA tool would probably be a better fit it does more than just Deployment automation and ARA tools are more "Hot" in the DevOps world right now - especially with evolving things like WinOps.

As far as other tools, take a look at the DevOps toolchain wiki page and the WinOps focused tools section.

*Full disclosure I work at Inedo, and we make a solution for both of these options (with .NET in mind)

Inedo toolchain

4

Experience at my place has been using Octopus Deploy, and Proget - had great success building a good pipeline and its scaling well. Also plays nicely with unit testing and automated functional test tools. We are predominantly in Azure on .Net but also deploying to private cloud and on premise

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.