TeamCity is a powerful build server. It works with any source control system you might have, and it has built-in tasks for compiling and running tests for any common programming language. It can build your Visual Studio solution, run your NUnit/MSTest unit tests, collect .NET code coverage data, and perform code analysis.
Scroll through the extensive list of built in tasks, though, and you'll notice a gap. Where are the tasks to deploy the software once it is built? Where are the tasks to configure IIS, or install a Windows service? Where are the tasks to change configuration files depending on the environment? On the surface, TeamCity is a continuous delivery tool, but read through the details and you'll find that deployment is limited to calling a big script that you write yourself. It's up to you to figure out the nitty gritty deployment details.
Just like TeamCity makes build automation easy, Octopus Deploy makes deployment automation easy.
TeamCity builds the code and runs tests, while Octopus takes care of:
- Distributing applications to all the remote machines, securely
- Environment-specific configuration, like connection strings
- Configuring IIS sites and installing Windows Services
- Doing all of the above across many machines in parallel
Learn more about connecting TeamCity with Octopus and our TeamCity plugin.
Building and pushing packages
Have TeamCity compile your code, run the tests, and build a package ready for Octopus to deploy. You can push the package directly to Octopus, or have Octopus fetch it from the TeamCity NuGet feed.
Promote and deploy releases
Create releases in Octopus once the TeamCity build completes. Automatically deploy the release to a Dev environment, or chain TeamCity builds to deploy to a Test environment, run automated integration tests, then promote to staging or production.
Fail the build if the deployment fails
Output from the Octopus deployment can appear in the TeamCity build log, and you can have TeamCity fail the build if the deployment in Octopus fails.
You might also like...
Currently updating a deployment process in @OctopusDeploy. I forgot how easy this was to use, everything just makes sense.— David Swindells (@d_swindells) January 30, 2019
Tools like @OctopusDeploy can be great in enabling culture change, we've been able to scale and improve our configuration story since we started using it.— Neil Chalk (@_neilch) July 19, 2018