SlideShare a Scribd company logo
JSS Build and
Deployment
In Azure DevOps
For OnPrem and Azure
whoami
David Szöke
Application Engineer @ Unic, Switzerland
How did we get here?
Neuland
New Sitecore Project
JSS
Embrace the Cloud and SaaS
Chance to revisit our current CI/CD Approach
TeamCity
Octopus
Goals
Extensible and accessible
Template for further projects
Reduce complexity in Tooling and CI/CD process
Single build approach for On-Prem and Azure artifacts
Azure DevOps &
Context
Capabilities
Formerly TFS
Version Control
Reporting
Requirements Managment
Project Management
Testing Management
Automated Builds
Release Management
Azure Pipelines
Automatically build, test and deploy
Set of defined steps running in agents
Jobs can be parallelized
Definable in both, .yaml and GUI
Large ecosystem
Out of the box tasks
Marketplace
Custom tasks
Repository
Monolithic repo
Single versioning of frontend, backend, test,
infrastructure, build and deployment code
Using gitflow
JSS Solution
Based on React Typescript Starter Project https://bit.ly/2HKycMj
Allows to build headless proxy once, deploy many
Pre-defined build scripts
Storybook
Sitecore Solution
Standard .NET Sitecore Project
Following Helix Principles
Sitecore 9.2
Unicorn
Rule based configuration
Build
Definitions
Split into Pipeline and Template definitions
Allows re-usability of jobs
Allows to define specific triggers
JSS build and deployment
Available Pipelines
Split into concerns
Frontend (JSS)
Backend (Sitecore)
Testing
Infrastructure
Build Pipelines for Developer Feedback
Build Pipelines for Artifact generation
JSS Build
npm ci / npm build
Verifies linting
Runs unit tests
Publishes test and coverage result
Generates artifacts for Integrated and
Headless mode
Sitecore Build
Builds .NET Solution
Generates base artifact contains
solution output
Binaries
Config files
Run unit tests
Publishes test and coverage result
Full Build
Runs JSS and Sitecore Build in parallel
Invokes a magic blackbox
Generates web deploy packages for CM, CD,
REP and PRC
Sitecore Azure Toolkit
Official Sitecore Product
Tool for deploying ARM templates to Azure
Can create web deploy packages
Solution
Sitecore Modules
https://bit.ly/2T5CLpR
Web deploy package generation
Solution Output
Cargo PayloadsTopology Configuration
Azure Toolkit
Web Deploy Packages
- CM
- CD
- REP
- PRC
Vanilla Webroot
Cargo Payloads
Proprietary definition of transformations
.sccpl
Supports several ways of modifying web deploy packages
CopyToWebsite
CopyToRoot
Xdts
IOAction
Out of the box payloads (ApplicationInsights, Redis session store, etc.)
https://bit.ly/32fEsoO
JSS build and deployment
JSS build and deployment
Unicorn Items
Only specifically deployed to CM instances
Full Build pipeline prepares cargo payload
Removing DB operations from .scwdps
.dacpac generation during build
Remove ConnectionStrings.config from the input package before invoking SAT
https://schwindelig.io/sitecore/azure/2019/08/21/skip-dacpac-generation-sitecore-azure-toolkit.html
.scwdps contain SQL scripts like CreateUser.Core.sql
Undocumented cmdlet: Remove-SCDatabaseOperations
https://schwindelig.io/sitecore/azure/2019/08/24/remove-db-operations-from-scwp.html
Preparing Sitecore Modules
Used to have items, binaries and configs within the solution
Split into individual deployable components (JSS, SPE, SPS)
Convert to .scwdp using SAT
ConvertTo-SCModuleWebDeployPackage
2 variations: On-Prem and Azure
Use DisableDacPacOptions to create tables or users when you are deploying. You must disable
SqlDatabaseOptions for the module WDP package if you want to deploy them to an on-premise
instance. If you do not disable SqlDatabaseOptions, msDeploy will try to convert the contained
database into an uncontained database and the attempts to apply these options while deploying
the module package produces the wrong result.
https://bit.ly/39ZsceC
Ready for deployment
JSS Distribution
JSS Headless Proxy
Solution Web Deploy packages Module Web Deploy packages
Deployment
:shipit:
Environments
On-Prem DEV On-Prem TST Azure QA Azure INT Azure PRD
Azure Infrastructure is set up prior to software deployment
Release Pipelines
Classic Pipelines
GUI
Multi Stage Pipelines
YAML
Preview feature
Stages
Variables
Can be defined in GUI
Scoped to either release or stage
Can reference other variables, mainting context
On-Prem Deployments
Targets
Deployment Pools
Targets can be tagged
Tags can then be used within release
pipelines
JSS build and deployment
Sitecore Deployment
Mostly out of the box steps
Unicorn sync is a free market place task
Separate deployment of modules
Proxy Deployment Tasks
Variable substitution
PM2
Process.json
API Key
Layout Service Host
Solution Version
Telemetry Key
Task Groups
Re-usable elements
Don’t use templates
Can be versioned
Change history
Azure Deployments
Very similar to On-Prem
App Service Deploy
Staging Slots
Staging Slots
Live Apps with their own host names
App content and configs can be swapped
Validate changes before swapping
Swap with preview
User
production.customer.comdeployment.customer.com
Swap
Automated tests &
Health checks
Connection Strings
Can be defined in Azure
Responsibility of OPs
web.configs
IIS and App Service deploy tasks support .xml
transformations
Variable substitution
Applied by convention: web-<stage>.config
Learnings
Azure DevOps
Great documentation. Read it
Seamless integration to Azure, Github, etc.
Team is transparent. Short sprints
Hit or miss
.NET Code Coverage reports
Parallelism
Consider using multi stage instead of classic pipelines
Check Teams integration
Stay within the box
Azure
RTM
Apply ASE strategy early
Don’t rely on single blog posts
Deployments (Infrastructure + Software) take time
App Services for Linux are weird
Organisational
Don’t be afraid to delegate responsibility
Include developers early
Monolithic repos bring awareness
Dev and Ops need to stay in close contact
Have a proper backlog
POC and ship early
Thank you!

More Related Content

What's hot (20)

PDF
The pain and gains running Docker in live @Pipedrive
Renno Reinurm
 
PPTX
CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
Simon McCartney
 
PDF
(Declarative) Jenkins Pipelines
Steffen Gebert
 
PDF
Improve your Java Environment with Docker
HanoiJUG
 
PDF
Why so continuous
Max Lobur
 
PPTX
Continuous Integration With Jenkins Docker SQL Server
Chris Adkin
 
PDF
Welcome to Jenkins
Somkiat Puisungnoen
 
PDF
GlassFish Embedded API
Eduardo Pelegri-Llopart
 
PDF
Lightning talk: 12 Factor Containers
Mukhtar Haji
 
PPTX
7 Habits of Highly Effective Jenkins Users
Jules Pierre-Louis
 
PDF
Project Fuji/OpenESB Aquarium Paris
Alexis Moussine-Pouchkine
 
PPTX
JavaOne 2014: Next Step in Automation: Elastic Build Environment
Kohsuke Kawaguchi
 
PPTX
Automating Azure VMs with PowerShell
Alexander Feschenko
 
PDF
Monitor your Java application with Prometheus Stack
Wojciech Barczyński
 
PDF
Continuous Delivery with Jenkins Workflow
Udaypal Aarkoti
 
PDF
Monitoring Akka with Kamon 1.0
Steffen Gebert
 
PPT
Learn jobDSL for Jenkins
Larry Cai
 
PDF
Introduction to WebMvc.fn
VMware Tanzu
 
PPTX
Jenkins tutorial
Mamun Rashid, CCDH
 
PDF
GlassFish v3 : En Route Java EE 6
Alexis Moussine-Pouchkine
 
The pain and gains running Docker in live @Pipedrive
Renno Reinurm
 
CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
Simon McCartney
 
(Declarative) Jenkins Pipelines
Steffen Gebert
 
Improve your Java Environment with Docker
HanoiJUG
 
Why so continuous
Max Lobur
 
Continuous Integration With Jenkins Docker SQL Server
Chris Adkin
 
Welcome to Jenkins
Somkiat Puisungnoen
 
GlassFish Embedded API
Eduardo Pelegri-Llopart
 
Lightning talk: 12 Factor Containers
Mukhtar Haji
 
7 Habits of Highly Effective Jenkins Users
Jules Pierre-Louis
 
Project Fuji/OpenESB Aquarium Paris
Alexis Moussine-Pouchkine
 
JavaOne 2014: Next Step in Automation: Elastic Build Environment
Kohsuke Kawaguchi
 
Automating Azure VMs with PowerShell
Alexander Feschenko
 
Monitor your Java application with Prometheus Stack
Wojciech Barczyński
 
Continuous Delivery with Jenkins Workflow
Udaypal Aarkoti
 
Monitoring Akka with Kamon 1.0
Steffen Gebert
 
Learn jobDSL for Jenkins
Larry Cai
 
Introduction to WebMvc.fn
VMware Tanzu
 
Jenkins tutorial
Mamun Rashid, CCDH
 
GlassFish v3 : En Route Java EE 6
Alexis Moussine-Pouchkine
 

Similar to JSS build and deployment (20)

PPTX
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
PDF
NoSQL on microsoft azure april 2014
Brian Benz
 
PPTX
Azure DevOps for JavaScript Developers
Sarah Dutkiewicz
 
PPTX
Windows Azure
Murali Krishna Alluri
 
PPTX
CTU June 2011 - Hybrid Cloud Management with Microsoft System Center - Concero
Spiffy
 
PPTX
Agile azure manchester azure user group v3
jaye Martin
 
PPTX
Sky High With Azure
Clint Edmonson
 
PPTX
Windows azure overview for SharePoint Pros
Usama Wahab Khan Cloud, Data and AI
 
PDF
Spring Boot - Microservice Metrics Monitoring
DonghuKIM2
 
PDF
Spring boot microservice metrics monitoring
Oracle Korea
 
PPTX
Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services
Patrick Chanezon
 
PDF
DCSF 19 Developing Apps with Containers, Functions and Cloud Services
Docker, Inc.
 
PDF
Azure Cloud Application Development Workshop - UGIdotNET
Lorenzo Barbieri
 
PPTX
Microsoft Azure
Mohab El-Shishtawy
 
PDF
Best Practices for couchDB developers on Microsoft Azure
Brian Benz
 
PPTX
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
VMware Tanzu
 
PPTX
Windows Azure & How to Deploy Wordress
George Kanellopoulos
 
PDF
Azure Containers & Serverless Technology Options (After-Tech-Summit-2018 Edit...
Yoichi Kawasaki
 
PPTX
2020-02-10 Java on Azure Solution Briefing
Ed Burns
 
PPTX
Azure Stack Overview (Dec/2018)
Cenk Ersoy
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
NoSQL on microsoft azure april 2014
Brian Benz
 
Azure DevOps for JavaScript Developers
Sarah Dutkiewicz
 
Windows Azure
Murali Krishna Alluri
 
CTU June 2011 - Hybrid Cloud Management with Microsoft System Center - Concero
Spiffy
 
Agile azure manchester azure user group v3
jaye Martin
 
Sky High With Azure
Clint Edmonson
 
Windows azure overview for SharePoint Pros
Usama Wahab Khan Cloud, Data and AI
 
Spring Boot - Microservice Metrics Monitoring
DonghuKIM2
 
Spring boot microservice metrics monitoring
Oracle Korea
 
Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services
Patrick Chanezon
 
DCSF 19 Developing Apps with Containers, Functions and Cloud Services
Docker, Inc.
 
Azure Cloud Application Development Workshop - UGIdotNET
Lorenzo Barbieri
 
Microsoft Azure
Mohab El-Shishtawy
 
Best Practices for couchDB developers on Microsoft Azure
Brian Benz
 
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
VMware Tanzu
 
Windows Azure & How to Deploy Wordress
George Kanellopoulos
 
Azure Containers & Serverless Technology Options (After-Tech-Summit-2018 Edit...
Yoichi Kawasaki
 
2020-02-10 Java on Azure Solution Briefing
Ed Burns
 
Azure Stack Overview (Dec/2018)
Cenk Ersoy
 
Ad

Recently uploaded (20)

PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PPTX
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
Timothy Rottach - Ramp up on AI Use Cases, from Vector Search to AI Agents wi...
AWS Chicago
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PDF
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
PDF
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PPTX
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
PDF
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
COMPARISON OF RASTER ANALYSIS TOOLS OF QGIS AND ARCGIS
Sharanya Sarkar
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
Timothy Rottach - Ramp up on AI Use Cases, from Vector Search to AI Agents wi...
AWS Chicago
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Webinar: Introduction to LF Energy EVerest
DanBrown980551
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
DevBcn - Building 10x Organizations Using Modern Productivity Metrics
Justin Reock
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Achieving Consistent and Reliable AI Code Generation - Medusa AI
medusaaico
 
Fl Studio 24.2.2 Build 4597 Crack for Windows Free Download 2025
faizk77g
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
WooCommerce Workshop: Bring Your Laptop
Laura Hartwig
 
Complete JavaScript Notes: From Basics to Advanced Concepts.pdf
haydendavispro
 
Ad

JSS build and deployment

  • 1. JSS Build and Deployment In Azure DevOps For OnPrem and Azure
  • 3. How did we get here?
  • 4. Neuland New Sitecore Project JSS Embrace the Cloud and SaaS Chance to revisit our current CI/CD Approach TeamCity Octopus
  • 5. Goals Extensible and accessible Template for further projects Reduce complexity in Tooling and CI/CD process Single build approach for On-Prem and Azure artifacts
  • 7. Capabilities Formerly TFS Version Control Reporting Requirements Managment Project Management Testing Management Automated Builds Release Management
  • 8. Azure Pipelines Automatically build, test and deploy Set of defined steps running in agents Jobs can be parallelized Definable in both, .yaml and GUI Large ecosystem Out of the box tasks Marketplace Custom tasks
  • 9. Repository Monolithic repo Single versioning of frontend, backend, test, infrastructure, build and deployment code Using gitflow
  • 10. JSS Solution Based on React Typescript Starter Project https://bit.ly/2HKycMj Allows to build headless proxy once, deploy many Pre-defined build scripts Storybook
  • 11. Sitecore Solution Standard .NET Sitecore Project Following Helix Principles Sitecore 9.2 Unicorn Rule based configuration
  • 12. Build
  • 13. Definitions Split into Pipeline and Template definitions Allows re-usability of jobs Allows to define specific triggers
  • 15. Available Pipelines Split into concerns Frontend (JSS) Backend (Sitecore) Testing Infrastructure Build Pipelines for Developer Feedback Build Pipelines for Artifact generation
  • 16. JSS Build npm ci / npm build Verifies linting Runs unit tests Publishes test and coverage result Generates artifacts for Integrated and Headless mode
  • 17. Sitecore Build Builds .NET Solution Generates base artifact contains solution output Binaries Config files Run unit tests Publishes test and coverage result
  • 18. Full Build Runs JSS and Sitecore Build in parallel Invokes a magic blackbox Generates web deploy packages for CM, CD, REP and PRC
  • 19. Sitecore Azure Toolkit Official Sitecore Product Tool for deploying ARM templates to Azure Can create web deploy packages Solution Sitecore Modules https://bit.ly/2T5CLpR
  • 20. Web deploy package generation Solution Output Cargo PayloadsTopology Configuration Azure Toolkit Web Deploy Packages - CM - CD - REP - PRC Vanilla Webroot
  • 21. Cargo Payloads Proprietary definition of transformations .sccpl Supports several ways of modifying web deploy packages CopyToWebsite CopyToRoot Xdts IOAction Out of the box payloads (ApplicationInsights, Redis session store, etc.) https://bit.ly/32fEsoO
  • 24. Unicorn Items Only specifically deployed to CM instances Full Build pipeline prepares cargo payload
  • 25. Removing DB operations from .scwdps .dacpac generation during build Remove ConnectionStrings.config from the input package before invoking SAT https://schwindelig.io/sitecore/azure/2019/08/21/skip-dacpac-generation-sitecore-azure-toolkit.html .scwdps contain SQL scripts like CreateUser.Core.sql Undocumented cmdlet: Remove-SCDatabaseOperations https://schwindelig.io/sitecore/azure/2019/08/24/remove-db-operations-from-scwp.html
  • 26. Preparing Sitecore Modules Used to have items, binaries and configs within the solution Split into individual deployable components (JSS, SPE, SPS) Convert to .scwdp using SAT ConvertTo-SCModuleWebDeployPackage 2 variations: On-Prem and Azure Use DisableDacPacOptions to create tables or users when you are deploying. You must disable SqlDatabaseOptions for the module WDP package if you want to deploy them to an on-premise instance. If you do not disable SqlDatabaseOptions, msDeploy will try to convert the contained database into an uncontained database and the attempts to apply these options while deploying the module package produces the wrong result. https://bit.ly/39ZsceC
  • 27. Ready for deployment JSS Distribution JSS Headless Proxy Solution Web Deploy packages Module Web Deploy packages
  • 29. Environments On-Prem DEV On-Prem TST Azure QA Azure INT Azure PRD Azure Infrastructure is set up prior to software deployment
  • 30. Release Pipelines Classic Pipelines GUI Multi Stage Pipelines YAML Preview feature Stages
  • 31. Variables Can be defined in GUI Scoped to either release or stage Can reference other variables, mainting context
  • 32. On-Prem Deployments Targets Deployment Pools Targets can be tagged Tags can then be used within release pipelines
  • 34. Sitecore Deployment Mostly out of the box steps Unicorn sync is a free market place task Separate deployment of modules
  • 35. Proxy Deployment Tasks Variable substitution PM2 Process.json API Key Layout Service Host Solution Version Telemetry Key
  • 36. Task Groups Re-usable elements Don’t use templates Can be versioned Change history
  • 37. Azure Deployments Very similar to On-Prem App Service Deploy Staging Slots
  • 38. Staging Slots Live Apps with their own host names App content and configs can be swapped Validate changes before swapping Swap with preview User production.customer.comdeployment.customer.com Swap Automated tests & Health checks
  • 39. Connection Strings Can be defined in Azure Responsibility of OPs
  • 40. web.configs IIS and App Service deploy tasks support .xml transformations Variable substitution Applied by convention: web-<stage>.config
  • 42. Azure DevOps Great documentation. Read it Seamless integration to Azure, Github, etc. Team is transparent. Short sprints Hit or miss .NET Code Coverage reports Parallelism Consider using multi stage instead of classic pipelines Check Teams integration Stay within the box
  • 43. Azure RTM Apply ASE strategy early Don’t rely on single blog posts Deployments (Infrastructure + Software) take time App Services for Linux are weird
  • 44. Organisational Don’t be afraid to delegate responsibility Include developers early Monolithic repos bring awareness Dev and Ops need to stay in close contact Have a proper backlog POC and ship early