SlideShare a Scribd company logo
SuperchargeYour
Continuous
Integration
Deployments
Nikola Gotsev
April 26, 2016
What isContinuous Integration ?
Isn’t that the same asContinuous
Deployment ?
Or is it related to the source control
system I use ?
Or maybe it is a tool ?
NO !
Continuous Integration is a process
and a development practice.
CI -The Practice
• Maintain a single source repository
• Automate the build
• Make your build self-testing
• Every commit should build on an integration machine
• Make it easy for anyone to get the latest executable
• Everyone can see what’s happening
CI -The Process
• Developers check out code into their private workspaces.
• When done, commit the changes to the repository.
• The CI server monitors the repository and checks out changes when they
occur.
• The CI server builds the system and runs unit and integration tests.
• The CI server releases deployable artefacts for testing.
• If the build or tests fail, the CI server alerts the team.
• Continue to continually integrate and test throughout the project.
CI -The Process
https://insights.sei.cmu.edu/devops/2015/01/continuous-integration-in-devops-1.html
CI -The ProcessSitecore Nightly Build
https://insights.sei.cmu.edu/devops/2015/01/continuous-integration-in-devops-1.html
The most common problem?
“It is cheaper to find bugs in lower environments. It is really
cheap on a Dev Box and really expensive on Production.”
- CharlesTurano, CTO, Hedgehog Development
“Continuous Integration doesn’t get rid of bugs, but it does
make them dramatically easier to find and remove.”
- Martin Fowler, Chief Scientist,ThoughtWorks
How do I supercharge myCI Process?
Rule #1
Always have a continuous integration build in place!
Scheduled builds count!
Rule #1.1
Have an award for whoever broke the build last!
Rule #2 Branches
Rule #2 Branches
Make sure to …
• … have a master branch
• … have a development branch
• … create tags for production releaases
• … have feature branches for long running features
• … use hotfix branches as necessary
Rule #2SampleGit Branching Model
https://backlogtool.com/git-guide/en/stepup/stepup1_5.html
Rule #3
Always manage your project dependencies!
Yes the front-end ones as well!
Rule #3 Nugget
Rule #3 Nugget
Rule #3
Or just your custom code !
Rule #3 Front-end Dependencies
Bower
Rule #3 Front-end Dependencies
Never version compiled front-end resources (css, javascipt
etc.) into source control. Let the build compile them the
same way it does with your C# code!
Rule #4 Tests,Tests,Tests
Rule #4 Make yourSitecore code testable
• Use MVC 
• Always depend on abstractions not on implementations
• Consider using Dependency Injection frameworks
• Use ORMs – Glass, Fortis, Synthesis
• Make sure to try Sitecore.FakeDb
Rule #4UnitTests
Rule #4 IntegrationTests -Selenium
Takeaway
Rule #5 Keep your content up to date
Sitecore PowerShell Extensions
Rule #6Continuous Deployments
Continuously Deploying Items
Usually a 3 step process:
1. Find a way to serialize your items and bring them to
source control
2. Build a package out of your serialized items
3. Deploy the package to the environment
Continuously Deploying Items-Serialization
Or your custom solution !
Continuously Deploying Items – Building a Package
Sitecore Courier
ContinuouslyDeployingItems – Installingthe Package
• Sitecore.Ship – Automatically installs packages posted
via HTTP
• Sitecore Package Deployer – Automatically installs
packages from deployed on the file system
Continuously Deploying Items- Notes
• TDS can deploy items directly(without a need for
packaging), if the build server has access to the
webserver file system
• Unicorn can deserialize deployed serialized items
without the need for packaging
Continuously Deploying Items–SomeAdvices
1. Keep a minimum amount of content versioned in source
control
2. Never deploy content and media to higher
environments, use tools or packages to move them
3. Always backup the databases before deploying items
Continuous Deployments -Scripting
• Embrace the scripting !!!!
• Invest some time to learn PowerShell
• Script common tasks as DB andWebsite Backups
• Script common SitecoreTasks with Sitecore PowerShell
Extensions
Production-To Deploy or NotTo Deploy?
My perfect production build scenario
1. Clean Code Checkout
2. Restoring NuGet Packages
3. Restoring and Recompiling Frontend Assets
4. Running UnitTests (Integration – lower environments)
5. Automated PowerShell backups (Remote Execution)
6. Building CM and CD Packages
7. Deploy and install the packages (install can be manual)
Questions?
44
Thank you!
ngotsev@hhogdev.com
@nsgocev
http://sitecorecorner.com

More Related Content

What's hot

Introduction To Continuous Integration
Introduction To Continuous IntegrationIntroduction To Continuous Integration
Introduction To Continuous Integration
Christopher Read
 
AgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel HarpAgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel Harp
Barry Gavril
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
amscanne
 
Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
Mike McGarr
 
Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and Tell
E. Camden Fisher
 

What's hot (20)

Continuous delivery - tools and techniques
Continuous delivery - tools and techniquesContinuous delivery - tools and techniques
Continuous delivery - tools and techniques
 
Introduction To Continuous Integration
Introduction To Continuous IntegrationIntroduction To Continuous Integration
Introduction To Continuous Integration
 
Jenkins Introduction
Jenkins IntroductionJenkins Introduction
Jenkins Introduction
 
Security in OSS DevOps
Security in OSS DevOpsSecurity in OSS DevOps
Security in OSS DevOps
 
Introduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to ChefIntroduction to Infrastructure as Code & Automation / Introduction to Chef
Introduction to Infrastructure as Code & Automation / Introduction to Chef
 
AgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel HarpAgileLINC Continous Slides by Daniel Harp
AgileLINC Continous Slides by Daniel Harp
 
Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?Devops, Secops, Opsec, DevSec *ops *.* ?
Devops, Secops, Opsec, DevSec *ops *.* ?
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 
Standardizing Jenkins with CloudBees Jenkins Team
Standardizing Jenkins with CloudBees Jenkins TeamStandardizing Jenkins with CloudBees Jenkins Team
Standardizing Jenkins with CloudBees Jenkins Team
 
Jenkins
JenkinsJenkins
Jenkins
 
Continuous integration
Continuous integrationContinuous integration
Continuous integration
 
Continuous Integration 101
Continuous Integration 101Continuous Integration 101
Continuous Integration 101
 
Continuous delivery applied
Continuous delivery appliedContinuous delivery applied
Continuous delivery applied
 
Continuous Integration (CI) - An effective development practice
Continuous Integration (CI) - An effective development practiceContinuous Integration (CI) - An effective development practice
Continuous Integration (CI) - An effective development practice
 
#speakgell - Continuous Integration in iconnect360
#speakgell - Continuous Integration in iconnect360#speakgell - Continuous Integration in iconnect360
#speakgell - Continuous Integration in iconnect360
 
Continuous Integration at T3CON08
Continuous Integration at T3CON08Continuous Integration at T3CON08
Continuous Integration at T3CON08
 
Yale Jenkins Show and Tell
Yale Jenkins Show and TellYale Jenkins Show and Tell
Yale Jenkins Show and Tell
 
Improving software quality using Continuous Integration
Improving software quality using Continuous IntegrationImproving software quality using Continuous Integration
Improving software quality using Continuous Integration
 
Continous integration with jenkins
Continous integration with jenkinsContinous integration with jenkins
Continous integration with jenkins
 
Jenkins CI
Jenkins CIJenkins CI
Jenkins CI
 

Viewers also liked

Manufacturing Prospectus Digital Version- FINAL
Manufacturing Prospectus Digital Version- FINALManufacturing Prospectus Digital Version- FINAL
Manufacturing Prospectus Digital Version- FINAL
James Devitt
 

Viewers also liked (15)

Missões para crianças bandeiras para colorir - palestina
Missões para crianças   bandeiras para colorir - palestinaMissões para crianças   bandeiras para colorir - palestina
Missões para crianças bandeiras para colorir - palestina
 
Treball de recerca 2015 2016
Treball de recerca 2015 2016Treball de recerca 2015 2016
Treball de recerca 2015 2016
 
Social Media Marketing
Social Media MarketingSocial Media Marketing
Social Media Marketing
 
U1 t1act1cabeza.jessicavm
U1 t1act1cabeza.jessicavmU1 t1act1cabeza.jessicavm
U1 t1act1cabeza.jessicavm
 
Jaaroverzicht PvdA Leiden
Jaaroverzicht PvdA LeidenJaaroverzicht PvdA Leiden
Jaaroverzicht PvdA Leiden
 
Shot list
Shot listShot list
Shot list
 
Manufacturing Prospectus Digital Version- FINAL
Manufacturing Prospectus Digital Version- FINALManufacturing Prospectus Digital Version- FINAL
Manufacturing Prospectus Digital Version- FINAL
 
Missões para crianças bandeiras para colorir - saara ocidental
Missões para crianças   bandeiras para colorir - saara ocidentalMissões para crianças   bandeiras para colorir - saara ocidental
Missões para crianças bandeiras para colorir - saara ocidental
 
Présentation Net for God Media School - Soutenez-nous !
Présentation Net for God Media School - Soutenez-nous !Présentation Net for God Media School - Soutenez-nous !
Présentation Net for God Media School - Soutenez-nous !
 
Missões para crianças bandeiras para colorir - turcomenistão
Missões para crianças   bandeiras para colorir - turcomenistãoMissões para crianças   bandeiras para colorir - turcomenistão
Missões para crianças bandeiras para colorir - turcomenistão
 
Cv gojko sredovic eng
Cv gojko sredovic engCv gojko sredovic eng
Cv gojko sredovic eng
 
Apocalipticos e integrados
Apocalipticos e integradosApocalipticos e integrados
Apocalipticos e integrados
 
Enfermedad de creutzfeldt jakob
Enfermedad de creutzfeldt jakobEnfermedad de creutzfeldt jakob
Enfermedad de creutzfeldt jakob
 
U7 t2toro.jessicavm
U7 t2toro.jessicavmU7 t2toro.jessicavm
U7 t2toro.jessicavm
 
Coca cola ppt
Coca cola pptCoca cola ppt
Coca cola ppt
 

Similar to Super chargeyourcontiniousintegrationdeployments

Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
Steve Povilaitis
 

Similar to Super chargeyourcontiniousintegrationdeployments (20)

Continuous deployment steve povilaitis
Continuous deployment   steve povilaitisContinuous deployment   steve povilaitis
Continuous deployment steve povilaitis
 
Continuous Everything v2.0
Continuous Everything v2.0Continuous Everything v2.0
Continuous Everything v2.0
 
Continuous Everything
Continuous EverythingContinuous Everything
Continuous Everything
 
Jenkins_1679702972.pdf
Jenkins_1679702972.pdfJenkins_1679702972.pdf
Jenkins_1679702972.pdf
 
jenkins.pdf
jenkins.pdfjenkins.pdf
jenkins.pdf
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
Introduction to Continuous Integration
Introduction to Continuous IntegrationIntroduction to Continuous Integration
Introduction to Continuous Integration
 
Getting to Walk with DevOps
Getting to Walk with DevOpsGetting to Walk with DevOps
Getting to Walk with DevOps
 
Version Control and Continuous Integration
Version Control and Continuous IntegrationVersion Control and Continuous Integration
Version Control and Continuous Integration
 
Contineous integration
Contineous integrationContineous integration
Contineous integration
 
Continous integration and delivery for single page applications
Continous integration and delivery for single page applicationsContinous integration and delivery for single page applications
Continous integration and delivery for single page applications
 
Part of the DLM Story: Automated database build and test with TeamCity
Part of the DLM Story: Automated database build and test with TeamCityPart of the DLM Story: Automated database build and test with TeamCity
Part of the DLM Story: Automated database build and test with TeamCity
 
Hudson
HudsonHudson
Hudson
 
Agile Secure Cloud Application Development Management
Agile Secure Cloud Application Development ManagementAgile Secure Cloud Application Development Management
Agile Secure Cloud Application Development Management
 
Fluo CICD OpenStack Summit
Fluo CICD OpenStack SummitFluo CICD OpenStack Summit
Fluo CICD OpenStack Summit
 
Devops
DevopsDevops
Devops
 
Continuous delivery applied (DC CI User Group)
Continuous delivery applied (DC CI User Group)Continuous delivery applied (DC CI User Group)
Continuous delivery applied (DC CI User Group)
 
Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019Next Generation Architecture Showcase July 2019
Next Generation Architecture Showcase July 2019
 
Architecting for the cloud storage build test
Architecting for the cloud storage build testArchitecting for the cloud storage build test
Architecting for the cloud storage build test
 
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
CarTrawler's Feature Team Architecture and Development Process Showcase by Lu...
 

Recently uploaded

AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
Alluxio, Inc.
 

Recently uploaded (20)

KLARNA - Language Models and Knowledge Graphs: A Systems Approach
KLARNA -  Language Models and Knowledge Graphs: A Systems ApproachKLARNA -  Language Models and Knowledge Graphs: A Systems Approach
KLARNA - Language Models and Knowledge Graphs: A Systems Approach
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM Integration
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with StrimziStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi
 
AI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning FrameworkAI/ML Infra Meetup | Perspective on Deep Learning Framework
AI/ML Infra Meetup | Perspective on Deep Learning Framework
 
A Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data MigrationA Guideline to Zendesk to Re:amaze Data Migration
A Guideline to Zendesk to Re:amaze Data Migration
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
 
Using IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New ZealandUsing IESVE for Room Loads Analysis - Australia & New Zealand
Using IESVE for Room Loads Analysis - Australia & New Zealand
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
iGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by SkilrockiGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by Skilrock
 
Implementing KPIs and Right Metrics for Agile Delivery Teams.pdf
Implementing KPIs and Right Metrics for Agile Delivery Teams.pdfImplementing KPIs and Right Metrics for Agile Delivery Teams.pdf
Implementing KPIs and Right Metrics for Agile Delivery Teams.pdf
 
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product UpdatesGraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
GraphSummit Stockholm - Neo4j - Knowledge Graphs and Product Updates
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
Breaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdfBreaking the Code : A Guide to WhatsApp Business API.pdf
Breaking the Code : A Guide to WhatsApp Business API.pdf
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
INGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by DesignINGKA DIGITAL: Linked Metadata by Design
INGKA DIGITAL: Linked Metadata by Design
 

Super chargeyourcontiniousintegrationdeployments

Editor's Notes

  1. Hi I am Nikola Gotsev Senior Solutions Developer at Hedgehog Development and a Sitecore MVP. There are tons of blog posts out there – explaining how to set continuous integration with Tool X using technology Y. But non of these answers the most important question
  2. I
  3. Maintain a single source repository Automate the build Make your build self-testing Every commit should build on an integration machine Make it easy for anyone to get the latest executable Everyone can see what’s happening
  4. Developers check out code into their private workspaces. When done, commit the changes to the repository. The CI server monitors the repository and checks out changes when they occur. The CI server builds the system and runs unit and integration tests. The CI server releases deployable artefacts for testing. If the build or tests fail, the CI server alerts the team. Continue to continually integrate and test throughout the project.
  5. Sitecore – a bit different. We also need to deploy items
  6. How many of you have actually had to deploy on Friday ? Story about 3k emails.
  7. I see many people just setting up automated builds – NO CI.
  8. We have the hedgehogs of shame 
  9. Really depends on your own process, but here are some recommendations for successful branching model. GIT Shines – can be achieved with other source controls too ! … have a master branch … have a development branch … create tags for production releases … have feature branches for long running features … use hotfix branches as necessary I also use release branches for staging – makes it more secure.
  10. We at hedgehog use NuGet a lot ! Sean H talked about this yesterday, so I am not going to dig into it. Make sure to check it out.
  11. Frontend Development improved a lot ! No longer just slicing designs. Embrace your frontend guys needs. Gulp and grunt are not just frontend. You can use them to automate some parts of your development – watchers (before auto content sync). Habitat uses gulp a lot
  12. Use MVC  Always depend on abstractions not on implementations Consider using Dependency Injection frameworks Use ORMs – Glass, Fortis, Synthesis Make sure to try Sitecore.FakeDb
  13. I see you ordering the book on amazon.
  14. Mostly Quality Assurance Engineers job. My GF is amazing at that 
  15. For the guys who ordered the book on amazon.
  16. Usually a 3 step process: Find a way to serialize your items and bring them to source control Build a package out of your serialized items Deploy the package to the environment
  17. Keep a minimum amount of content versioned in source control Never deploy content and media to higher environments, use tools or packages to move them Always backup the databases before deploying items
  18. Clean Code Checkout Restoring NuGet Packages Restoring and Recompiling Frontend Assets Running Unit Tests (Integration – lower environments) Automated PowerShell backups (Remote Execution) Building CM and CD Packages Deploy and install the packages (install can be manual) – just a single manual step.