Mastering the pipeline

23
Mastering the pipeline Jorrit Salverda Technical architect @ AKQA Amsterdam

Transcript of Mastering the pipeline

Page 1: Mastering the pipeline

Mastering the pipeline

Jorrit SalverdaTechnical architect @ AKQA Amsterdam

Page 2: Mastering the pipeline
Page 3: Mastering the pipeline
Page 4: Mastering the pipeline

What they have in common

● Little time for project setup

● Many deployments near go-live

● Pipelines up to UAT/PROD

Page 5: Mastering the pipeline
Page 6: Mastering the pipeline

Goals

● Short feedback loop

● Rapid deployments

● Optimised for build grids

● Executable on any machine

● Easy to set up

Page 7: Mastering the pipeline

MSBuild by convention

● Convention over configuration

● Open sourced on Github (MIT license)

● Easy to upgrade

● Conventions can be overridden

Page 8: Mastering the pipeline

Conventions

● Source directory structure

● Javascript and css dirs

● Postfixes for project names

● *.Website

● *.Database

● *.UnitTests

● ... and more

Page 9: Mastering the pipeline
Page 10: Mastering the pipeline

/t:Build

● C# (versions the assemblies)

● ASP.NET views

● Javascript (JSHint)

Page 11: Mastering the pipeline

/t:RunUnitTests

● Compile only if needed

● NUnit

● Machine Specification

● MSTest

Page 12: Mastering the pipeline

/t:Release

● Minify (YUI Compressor)

● Version images, fonts, flash

● Create Azure packages

● Transform configs

● Zip artefacts

Page 13: Mastering the pipeline

/t:RunIntegrationTests

● Deploy database and website to INT

● Run integration tests

Page 14: Mastering the pipeline

/t:AnalyzeWithSonar

● Code quality (FxCop)

● Coverage (OpenCover)

● Sonar

Page 15: Mastering the pipeline
Page 16: Mastering the pipeline

/t:Deploy /p:DeployEnvironment=UAT

● To IIS (MSDeploy)

● To Azure (Powershell commandlets)

● Windows Services (Robocopy)

Page 17: Mastering the pipeline
Page 18: Mastering the pipeline

/t:Deploy /p:DeployEnvironment=PROD

● Untested configuration!

Page 19: Mastering the pipeline

What's next?

● Automated rollback if smoke test fails

● Hook into monitoring (Github)

● Cross-browser testing (The Guardian)

Page 20: Mastering the pipeline

// todo

● Copy those scripts...

Page 21: Mastering the pipeline
Page 22: Mastering the pipeline
Page 23: Mastering the pipeline

Thanks

msbuild by convention github repo: http://goo.gl/w9OcR

introductory blog post:http://goo.gl/Y0cNW

reach me at:[email protected]