EPISERVER AND DEVOPS Joona Immonen Software architect @rinorragi
EPISERVER AND
DEVOPS
Joona Immonen
Software architect
@rinorragi
AGENDA
› What is DevOps
› How to setup development environment
› How to setup CI/QA/Prod environment
› How to build a build pipeline
› Support tickets and version control
› How to share your coolest code
DEVOPS
WHAT WIKI SAYS
WHAT I THINK:
AUTOMATE ALL THE THINGS
DEVELOPMENT
ENVIRONMENT
WHAT IF NEW GUY COMES TO
YOUR PROJECT?
AT SOLITA WE DO TWO THINGS
› Run chocolatey script for installing windows features and needed
software
• Visual Studio, .NET, IIS, Git client, etc…
› Run project specific dev_init powershell script to create project
specific configurations to your project
• Create needed IIS stuff, install certificates, etc…
DEMO
› Show chocolatey scripts…
› https://github.com/solita/powershell-
webdevelopertools/blob/master/install/workstation-install.ps1
HOSTING
ENVIRONMENT
NEW SERVERS ARE WAITING FOR
SETUP
WHICH WILL YOU CHOOSE
› Multiple wizards › Scripted installation
AT SOLITA WE PREFER SCRIPTING
DEMO
› Show server installation scripts…
› https://github.com/solita/powershell-
webdevelopertools/blob/master/scripts/solita_example_server_ins
tall.ps1
BUILDING A
BUILD PIPELINE
WE HEARD THAT YOU LIKE
BUILDING SO WE BUILD YOUR
BUILD PIPELINE
PIPELINE AS A CODE
› As you automate more and more things you will soon be thinking
following things:
• Can I build cloud environment infrastructure like I build my code?
• Should I have separeted pipeline for infrastructure?
• If I will have more and more important build jobs should I take them
under version control?
• Should I version my build configurations?
› Answer for all above is simple: YES
WE USE JENKINS JOB DSL PLUGIN
FOR THIS
› You will setup a groovy script
› Then you use Jenkins Job DSL
job for building other Jenkins
jobs
› And after that you can build your
build components with generated
Jobs
YOU GET NICE PIPELINE VIEW TOO
USED JENKINS PLUGINS
MSBuild Plugin
xUnit Plugin
MSTest plugin
MSTestRunner plugin
PowerShell plugin
Visual Studio Code Metrics Plugin
HipChat Plugin
Performance Plugin
Sonarqube plugin
OWASP-Dependency-Check Plugin
ZAProxy Plugin
New Relic Deployment Notifier Plugin
Gravatar plugin
Dynamic Parameter plugin
Selenium HTML report
Thinbackup
Violations plugin
Timestamper
Delivery Pipeline Plugin
Job DSL
Build pipeline plugin
Build Name Setter Plugin
Git plugin
Test stability history
DEMO
› Show the groovy script
› https://github.com/Rinorragi/pipeline-
template/blob/master/dotnet/jobs/Main.groovy
SUPPORT
TICKETS AND
VERSION
CONTROL
USING FEATURE BRANCHES
SUPPORT-1 branch
TEST
QAPROD
(master)
Jira ticket is started
to develop
Pull request for code review
Ready for customer
testingGo live
TIPS & TRICKS
› Use DIFF to see what tickets are on which environment
› Query Jira to see if the ticket there is on correct status
› Put everything on the screen
• New tickets (no branch)
• Under work tickets (status in jira under work, but no branch)
• Waiting code review (pull request made for test)
• Waiting for customer review (in QA but status not tested)
• Customer accepted (in QA and status OK)
SUPPORT SITUATION
TODO REVIEW QA PROD
SUPPORT-1
SUPPORT-2
SUPPORT-5 SUPPORT-73
SUPPORT-28
SUPPORT-21
SUPPORT-13
BEING A HERO THAT YOUR
PROJECT MANAGER LOVES
FEW WORDS
ABOUT NUGETS
FEW IDEAS ABOUT NUGETS
› NuGets are so good that we
created few of our own
› There are plenty of NuGets out
there but you still might want to
create specialized NuGets of your
own
› We are delivering specialized
integrations, elasticsearch tools
and scripts as NuGets to the
projects
BUILDING A NUGET SERVER
› Get a NuGet.Server Nuget and build it.
› Choose were you host it
› You just need to get your NuGets to specific folder to start hosting
them
CREATING A NUGET LIBRARY
› Always target your libraries as low as possible.
• .NET 4.5, Episerver 7, etc..
› Give meaningful names
› Plan ahead the consistency of the package
› Make sure that each build of your NuGet has different version
› Think through your API and extendability
TIPS & TRICKS
› You can make your NuGet to run PowerShell scripts in package
manager console
› With PowerShell script you can for example manipulate project
folder and add your something into solution
› With NuSpec you can include source code and debug objects too
› Make sure that your custom NuGet sources are configured into your
solution
RELEASING NUGET INTO YOUR
NUGET SERVER