Mastering the pipeline Jorrit Salverda Technical architect @ AKQA Amsterdam
Mastering the pipeline
Jorrit SalverdaTechnical architect @ AKQA Amsterdam
What they have in common
● Little time for project setup
● Many deployments near go-live
● Pipelines up to UAT/PROD
Goals
● Short feedback loop
● Rapid deployments
● Optimised for build grids
● Executable on any machine
● Easy to set up
MSBuild by convention
● Convention over configuration
● Open sourced on Github (MIT license)
● Easy to upgrade
● Conventions can be overridden
Conventions
● Source directory structure
● Javascript and css dirs
● Postfixes for project names
● *.Website
● *.Database
● *.UnitTests
● ... and more
/t:Build
● C# (versions the assemblies)
● ASP.NET views
● Javascript (JSHint)
/t:RunUnitTests
● Compile only if needed
● NUnit
● Machine Specification
● MSTest
/t:Release
● Minify (YUI Compressor)
● Version images, fonts, flash
● Create Azure packages
● Transform configs
● Zip artefacts
/t:RunIntegrationTests
● Deploy database and website to INT
● Run integration tests
/t:AnalyzeWithSonar
● Code quality (FxCop)
● Coverage (OpenCover)
● Sonar
/t:Deploy /p:DeployEnvironment=UAT
● To IIS (MSDeploy)
● To Azure (Powershell commandlets)
● Windows Services (Robocopy)
/t:Deploy /p:DeployEnvironment=PROD
● Untested configuration!
What's next?
● Automated rollback if smoke test fails
● Hook into monitoring (Github)
● Cross-browser testing (The Guardian)
// todo
● Copy those scripts...
Thanks
msbuild by convention github repo: http://goo.gl/w9OcR
introductory blog post:http://goo.gl/Y0cNW
reach me at:[email protected]