May 08, 2015
What is it ?
Why do we do it ?
How do we do it ?
Integrating with Sitecore ?
What’s next ?
Q & A
Test
Deploy
Promote Feedback
Implement
Build
Lots of good stuff out there
Recent User group presentation & blog posts
Lee Cook (Aqueduct) Continuous Delivery
Kern Herskind - Exploring Sitecore Item Serialisation
Alexander Doroshenko - Sitecore Continuous Deployment: From Zero to Hero
It fits with our Agile approach
Reduce Cycle time
Takes the pain out of releases
Automating the mundane leaves more time to innovate
Continuous Feedback leads to Continuous Improvement
2 week Sprint Cycle Deploy to UAT at the end of the sprint Automated Functional & Regression
Tests Client Approval Deploy to Production
Product Backlog
Sprint Backlog Release
Daily Scrum
Sprint (2 weeks)
Sprint review & Retrospective
Team City Build Server Solution built on every check-in Run Unit Tests Run Functional Tests Alert dev team on failure
Visual Studio, SlowCheetah, Config Transforms
NUnit SVN (Moving to Git) Team City Nant, Powershell, Psake, Powercore Sitecore Courier Octopus Deploy
Cucumber Capybara with Selenium 2 (webdriver)
and Poltergeist drivers Selenium grid 2 hub/nodes for
testing in parallel against both desktop and mobile browsers.
Code is the easy part Config transforms
Multiple environments Different Server Profiles (CA/CD)
Code reliant on templates/content items
Add Transforms to any xml file Preview Transformations Transforms run at build time Works with Octopus Deploy
Any config file will be merged at runtime – transform files will break Sitecore
3 Options: Maintain config per environment Manipulate with Powershell Single transformation file run against
all .config files in includes folder
Manually create and install packages Automate Package creation installation TDS Unicorn Courier – more on this later
Cruise Control Nant Build Scripts
packaged executable
Nant Deploy Script Custom config replacements per environment Manual Package creation
All templates and layouts Slow prone to errors
Team City Octopus Deploy Packages
Sitecore courier + custom pipeline Creates update packages delta changes Reduce package size Quicker to transfer Quicker to install Quicker to publish
Introduce internal QA environment Allows existing and new process to run in parallel Test deployment process Introduce more functional testing
• Build • Unit Tests • Smoke Tests
Dev
• Functional Regression Tests
• Client Approval
UAT • Release
Prod
4hrs
4hrs Total: 8hrs
• Build • Unit Tests
Dev
• Automated Functional Tests
• Smoke Tests
QA • External Functional / Regression Tests
• Client Approval
UAT
• Release
Prod
0hrs
1 hr
1hr
Total: 2hrs
Templates & Layouts serialised to disk automatically on save/move/delete Item’s checked into source control with code Build runner generates a differential package against release tag Update package included in the nuget package Deployed and installed as part of release to each environment Release tag updated after release to production Next sprints work differential against last release
Courier called using PSake via Runner. Build Parameters can be passed or use
defaults
Courier can install any item Templates, Layouts, System Items and Content Items
But should you? Risk of overwriting user content
Content packages created and installed manually Use defensive coding – If a sublayout requires a particular content item that
isn’t deployed then hide the component
Localised developer serialisation folders Committed to Subversion/Git Differential package generated using Courier and Serialisation tag
Sitecore Serialisation Issues
Path Length
Moved to Team City
Automated Deployment Steps through Octopus to QA
Deployment time down from 4hrs to approx 1hr
Per sprint saves approx 1 day developer effort.
Bolstered internal Testing Suite
Reduced Cycle Time for issue resolution
Git – Feature Branching
Automated deployments to Oxfam environments
Automatic load balancer switching – zero downtime
Increased flexibility to release
One click deployment
SDN (http://sdn.sitecore.net )
Team City (http://www.jetbrains.com/teamcity)
Octopus Deploy (http://octopusdeploy.com)
SlowCheetah (http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5)
Sitecore-PowerCore (https://github.com/adoprog/Sitecore-PowerCore)
Sitecore Courier (http://sitecorecourier.codeplex.com)
Sitecore Continuous Deployment: From Zero to Hero (http://sitecoresnippets.blogspot.co.uk/2013/05/sitecore-continuos-deployment-from-zero.html#.Ueahq_nVDzw)