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
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
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
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

What's hot (20)

The pain and gains running Docker in live @Pipedrive
The pain and gains running Docker in live @PipedriveThe pain and gains running Docker in live @Pipedrive
The pain and gains running Docker in live @Pipedrive
 
CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS CloudCI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
CI/CD Pipeline to Deploy and Maintain an OpenStack IaaS Cloud
 
(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines(Declarative) Jenkins Pipelines
(Declarative) Jenkins Pipelines
 
Improve your Java Environment with Docker
Improve your Java Environment with DockerImprove your Java Environment with Docker
Improve your Java Environment with Docker
 
Why so continuous
Why so continuousWhy so continuous
Why so continuous
 
Continuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL ServerContinuous Integration With Jenkins Docker SQL Server
Continuous Integration With Jenkins Docker SQL Server
 
Welcome to Jenkins
Welcome to JenkinsWelcome to Jenkins
Welcome to Jenkins
 
GlassFish Embedded API
GlassFish Embedded APIGlassFish Embedded API
GlassFish Embedded API
 
Lightning talk: 12 Factor Containers
Lightning talk: 12 Factor ContainersLightning talk: 12 Factor Containers
Lightning talk: 12 Factor Containers
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
 
Project Fuji/OpenESB Aquarium Paris
Project Fuji/OpenESB Aquarium ParisProject Fuji/OpenESB Aquarium Paris
Project Fuji/OpenESB Aquarium Paris
 
JavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build EnvironmentJavaOne 2014: Next Step in Automation: Elastic Build Environment
JavaOne 2014: Next Step in Automation: Elastic Build Environment
 
Automating Azure VMs with PowerShell
Automating Azure VMs with PowerShellAutomating Azure VMs with PowerShell
Automating Azure VMs with PowerShell
 
Monitor your Java application with Prometheus Stack
Monitor your Java application with Prometheus StackMonitor your Java application with Prometheus Stack
Monitor your Java application with Prometheus Stack
 
Continuous Delivery with Jenkins Workflow
Continuous Delivery with Jenkins WorkflowContinuous Delivery with Jenkins Workflow
Continuous Delivery with Jenkins Workflow
 
Monitoring Akka with Kamon 1.0
Monitoring Akka with Kamon 1.0Monitoring Akka with Kamon 1.0
Monitoring Akka with Kamon 1.0
 
Learn jobDSL for Jenkins
Learn jobDSL for JenkinsLearn jobDSL for Jenkins
Learn jobDSL for Jenkins
 
Introduction to WebMvc.fn
Introduction to WebMvc.fnIntroduction to WebMvc.fn
Introduction to WebMvc.fn
 
Jenkins tutorial
Jenkins tutorialJenkins tutorial
Jenkins tutorial
 
GlassFish v3 : En Route Java EE 6
GlassFish v3 : En Route Java EE 6GlassFish v3 : En Route Java EE 6
GlassFish v3 : En Route Java EE 6
 

Similar to JSS build and deployment

CTU June 2011 - Hybrid Cloud Management with Microsoft System Center - Concero
CTU June 2011 - Hybrid Cloud Management with Microsoft System Center - ConceroCTU June 2011 - Hybrid Cloud Management with Microsoft System Center - Concero
CTU June 2011 - Hybrid Cloud Management with Microsoft System Center - Concero
Spiffy
 
Agile azure manchester azure user group v3
Agile azure manchester azure user group  v3Agile azure manchester azure user group  v3
Agile azure manchester azure user group v3
jaye Martin
 
Windows Azure & How to Deploy Wordress
Windows Azure & How to Deploy WordressWindows Azure & How to Deploy Wordress
Windows Azure & How to Deploy Wordress
George Kanellopoulos
 

Similar to JSS build and deployment (20)

AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
AWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for GovernmentAWS Webcast - Build Agile Applications in AWS Cloud for Government
AWS Webcast - Build Agile Applications in AWS Cloud for Government
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
NoSQL on microsoft azure april 2014
NoSQL on microsoft azure   april 2014NoSQL on microsoft azure   april 2014
NoSQL on microsoft azure april 2014
 
Azure DevOps for JavaScript Developers
Azure DevOps for JavaScript DevelopersAzure DevOps for JavaScript Developers
Azure DevOps for JavaScript Developers
 
Windows Azure
Windows AzureWindows Azure
Windows Azure
 
Introduction to Codenvy / JugSummerCamp 2014
Introduction to Codenvy / JugSummerCamp 2014Introduction to Codenvy / JugSummerCamp 2014
Introduction to Codenvy / JugSummerCamp 2014
 
CTU June 2011 - Hybrid Cloud Management with Microsoft System Center - Concero
CTU June 2011 - Hybrid Cloud Management with Microsoft System Center - ConceroCTU June 2011 - Hybrid Cloud Management with Microsoft System Center - Concero
CTU June 2011 - Hybrid Cloud Management with Microsoft System Center - Concero
 
Agile azure manchester azure user group v3
Agile azure manchester azure user group  v3Agile azure manchester azure user group  v3
Agile azure manchester azure user group v3
 
Sky High With Azure
Sky High With AzureSky High With Azure
Sky High With Azure
 
Windows azure overview for SharePoint Pros
Windows azure overview for SharePoint Pros Windows azure overview for SharePoint Pros
Windows azure overview for SharePoint Pros
 
Spring boot microservice metrics monitoring
Spring boot   microservice metrics monitoringSpring boot   microservice metrics monitoring
Spring boot microservice metrics monitoring
 
Spring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics MonitoringSpring Boot - Microservice Metrics Monitoring
Spring Boot - Microservice Metrics Monitoring
 
DCSF 19 Developing Apps with Containers, Functions and Cloud Services
DCSF 19 Developing Apps with Containers, Functions and Cloud ServicesDCSF 19 Developing Apps with Containers, Functions and Cloud Services
DCSF 19 Developing Apps with Containers, Functions and Cloud Services
 
Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services
Dockercon 2019 Developing Apps with Containers, Functions and Cloud ServicesDockercon 2019 Developing Apps with Containers, Functions and Cloud Services
Dockercon 2019 Developing Apps with Containers, Functions and Cloud Services
 
Azure Cloud Application Development Workshop - UGIdotNET
Azure Cloud Application Development Workshop - UGIdotNETAzure Cloud Application Development Workshop - UGIdotNET
Azure Cloud Application Development Workshop - UGIdotNET
 
Microsoft Azure
Microsoft AzureMicrosoft Azure
Microsoft Azure
 
Best Practices for couchDB developers on Microsoft Azure
Best Practices for couchDB developers on Microsoft AzureBest Practices for couchDB developers on Microsoft Azure
Best Practices for couchDB developers on Microsoft Azure
 
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan GoksuSpring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
 
Windows Azure & How to Deploy Wordress
Windows Azure & How to Deploy WordressWindows Azure & How to Deploy Wordress
Windows Azure & How to Deploy Wordress
 

Recently uploaded

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Peter Udo Diehl
 

Recently uploaded (20)

Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo DiehlFuture Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
Future Visions: Predictions to Guide and Time Tech Innovation, Peter Udo Diehl
 
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
SOQL 201 for Admins & Developers: Slice & Dice Your Org’s Data With Aggregate...
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMsTo Graph or Not to Graph Knowledge Graph Architectures and LLMs
To Graph or Not to Graph Knowledge Graph Architectures and LLMs
 
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová10 Differences between Sales Cloud and CPQ, Blanka Doktorová
10 Differences between Sales Cloud and CPQ, Blanka Doktorová
 
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024
 
IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024IoT Analytics Company Presentation May 2024
IoT Analytics Company Presentation May 2024
 
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
Measures in SQL (a talk at SF Distributed Systems meetup, 2024-05-22)
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone KomSalesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
Salesforce Adoption – Metrics, Methods, and Motivation, Antone Kom
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
Exploring UiPath Orchestrator API: updates and limits in 2024 🚀
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Knowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and backKnowledge engineering: from people to machines and back
Knowledge engineering: from people to machines and back
 
Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...Mission to Decommission: Importance of Decommissioning Products to Increase E...
Mission to Decommission: Importance of Decommissioning Products to Increase E...
 

JSS build and deployment