Alex, there are many ways to approach CI deployments into your environments. Each client or organization is going to have different requirements as it related to versioning, restoring of backup, downtime, server access, etc...
Here is a great read that I think covers most of what you need.
TDS to Nuget
But we don't do just link answers here, so I will provide you with my personal experience. Here is how we did it recently at a client that has a requirement to use Jenkins, PowerShell, Nexus (for nuget storage).
- Configure the TDS projects to create an Update Package on build. (Update Package tab of TDS project)
- We created a job in Jenkins that used PowerShell to build the Visual Studio solution. Outputting the TDS update packages.
- Using the build number from Jenkins we versioned the outputted update package and pushed it to Nexus via the Nexus api. We now have a versioned package of the Sitecore items in Nexus (a type of Nuget server).
- We created another Jenkins job to deploy the package on the CM server, with a selector allowing us to specify a build number to deploy.
- When the job runs, the CM server downloads the specified nuget package from Nexus, and using Sitecore PowerShell Extensions (SPE), we install the package and finally publish the items to the CD server.
- If there are any deployment issues, we redeploy the pervious version to set the items back to how they we previously. You could also use SPE to create an anti-package and push that to NuGet before you deploy.
That is just one of many examples on how to deploy items via CI to your servers. As George stated, you can use Sitecore Ship to install packages, or SPE, or create an aspx page that pulled update packages from a folder that installs them via the Sitecore runtime. There are many ways.
You will need something to orchestrate the deployments. You can use:
Here is a recent Un-official Sitecore training that covers CI and Sitecore.
Here is a nice video on the overview of using Team City to deploy Sitecore by the nice people over at Hedgehog.
I hope this helps you