I had planned on kicking off a short series on how to tackle the challenges of Sitecore Continuous Deployment, but after I had written my post the Sitecore Virtual User Group (SVUG) held an online Q&A presentation by Jason Bert on Continuous Integration & Deployment. The presentation is a great introduction to the concepts and challenges.
Some notes on the presentation
TeamCity (build), Git (source control), Octopus Deploy (deployment), and Sitecore Courier (create update packages).
Why Sitecore Courier?
Handles difference between previous set of pushes, and the next set of pushes. Ensures changes are pushed to handle renames, moves, etc.
Continuous Delivery vs. Continuous Deployment
Jason explains the difference between the two terms, though he does acknowledge that a lot of folks are using these terms interchangeably.
The presentation walks through the entire TeamCity version control settings and other build steps required to hook into Git and execute the continuous builds on the build server.
Configuring Octopus Deploy
I hadn’t seen this tool before, but it looks slick. It supports variable replacements for different environments, and seems to include support for maintaining your environment-specific files such as connection strings files. I’ve currently been doing this with scripts or transform files, instead, but using a tool to handle this is much nicer. InRelease seems to be similar to Octopus Deploy, at least on the surface.
While not related to Sitecore, there’s a brief overview of this tool that performs code compliance analysis. I’ve done something similar with Team Foundation Server before, but SonarQube does seem to be very configurable for adding your own rules.