33
EPISERVER AND DEVOPS Joona Immonen Software architect @rinorragi

EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

Embed Size (px)

Citation preview

Page 1: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

EPISERVER AND

DEVOPS

Joona Immonen

Software architect

@rinorragi

Page 2: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

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

Page 3: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

DEVOPS

Page 4: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

WHAT WIKI SAYS

Page 5: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

WHAT I THINK:

AUTOMATE ALL THE THINGS

Page 6: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

DEVELOPMENT

ENVIRONMENT

Page 7: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

WHAT IF NEW GUY COMES TO

YOUR PROJECT?

Page 8: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

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…

Page 9: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

DEMO

› Show chocolatey scripts…

› https://github.com/solita/powershell-

webdevelopertools/blob/master/install/workstation-install.ps1

Page 10: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

HOSTING

ENVIRONMENT

Page 11: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

NEW SERVERS ARE WAITING FOR

SETUP

Page 12: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

WHICH WILL YOU CHOOSE

› Multiple wizards › Scripted installation

Page 13: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

AT SOLITA WE PREFER SCRIPTING

Page 14: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

DEMO

› Show server installation scripts…

› https://github.com/solita/powershell-

webdevelopertools/blob/master/scripts/solita_example_server_ins

tall.ps1

Page 15: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

BUILDING A

BUILD PIPELINE

Page 16: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

WE HEARD THAT YOU LIKE

BUILDING SO WE BUILD YOUR

BUILD PIPELINE

Page 17: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

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

Page 18: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

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

Page 19: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

YOU GET NICE PIPELINE VIEW TOO

Page 20: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

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

Page 21: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

DEMO

› Show the groovy script

› https://github.com/Rinorragi/pipeline-

template/blob/master/dotnet/jobs/Main.groovy

Page 22: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

SUPPORT

TICKETS AND

VERSION

CONTROL

Page 23: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

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

Page 24: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

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)

Page 25: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

SUPPORT SITUATION

TODO REVIEW QA PROD

SUPPORT-1

SUPPORT-2

SUPPORT-5 SUPPORT-73

SUPPORT-28

SUPPORT-21

SUPPORT-13

Page 26: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

BEING A HERO THAT YOUR

PROJECT MANAGER LOVES

Page 27: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

FEW WORDS

ABOUT NUGETS

Page 28: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

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

Page 29: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

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

Page 30: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

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

Page 31: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

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

Page 32: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita

RELEASING NUGET INTO YOUR

NUGET SERVER

Page 33: EpiHelsinki: Episerver_DevOps, Joona_Immonen, Solita