The road to
devops
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4606832/road.jpg)
(A CICD post-mortem)
- Dad of a 8 year old
- Senior Developer @ Ops Management Team
- ~10 years exp as a developer
2
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/2387311/me_and_vaeh.jpg)
Terrance Smith
outline
- Where we started (the setup)
- The Road (the conflict)
- Where we stand (the payoff?)
Where we started
Our Back-end
- Asp.Net Web API 2 (Service)
- DynamoDb (DB)
- Psake (Task Runner)
- Gis.StratusBuild
Our Front-end
- Angular 4*
- Angular Cli
- node\npm
What could possibly go wrong?
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4609053/start_the_car.jpg)
the road
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4602352/FR1.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4601758/jenkins-logo.png)
First we met jenkins
Road Bumps
- Lack of Jenkins Knowledge
- Lack of groovy knowledge
- VSTS Authentication Issues
- Permissions\Access Issues for Remote Team (ongoing)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4602282/bumps-ahead-should-i-stay-or-should-i-go.jpg)
jenkins Lessons learned
-
Setup email notifications ASAP for remote folks
- Navigation of the UI is Essential
- Be picky about plugins
- Test run locally where possible (setup a Jenkins server on your box)
jenkins Lessons learned 2
- Filter your branches as much as possible for improved performance
- Use the "Replay" feature in the Build to test changes to your jenkinsfile
- Because you will live in the Console Output, you should log judiciously.
then we paid the aws toll
Cost of Crossing
- Cloud Formation Template knowledge
- Overwhelming number of tools
- Acceptance that you will not remote into every box you work on
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4602314/aws-logo-01.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4602326/New-Jersey-man-accused-of-dodging-56000-worth-of-tolls.jpg)
Aws Lessons learned
-
Reminder: You should treat your servers as cattle, not as pets.
- Be prepared to spend a log of time tweaking Cloud Formation Templates
- Leverage CodeDeploy and CloudFormation Logs where possible to troubleshoot deployment issues
Aws Lessons learned 2
- If your data requires complex filtering\conditionals then consider a traditional db
- If your data is lightweight and simply structured and required little configuration then consider DynamoDB
- Use the AWS Cli for all configuration tokens\keys etc...
Then we hit .net build ROADBLOCKS
Road Blocks
- Incorrect versions of msbuild
- Invalid\Missing Web Targets
- Binding Redirect Errors
- Environment Inconsistencies
- Swagger Configuration Errors
- Mixing Net Standard 1.4-2.0 code with Full Framework
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4602280/images__1_.jpg)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4606716/dotnetjpg.jpg)
.net build Lessons learned
- Do not update nuget assemblies carelessly
- Do not mix .net standard versions
- YAGNI on refs; Remove what you don't need
.net build Lessons learned
- Verify your build version is the same everywhere
- Consider using Paket to lock down build versions
-
We are still trying to figure this one out.... :(
finally we went offroad front-end
Off Road Action
- Scripting integrations
- IIS Configuration for static js
- npm version issues
- Ng Tool versions
- npm Global conflicts
- Sass compiler issues
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/2383149/nodejs.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4606730/angular.png)
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4606736/yzculmat9mex0k90hhan.jpg)
Front-end Lessons learned
- Embrace angular cli tooling
- Rely on local node_modules where possible
- Avoid installing global npm packages on build server
Front-end Lessons learned 2
- Plan for non-trivial effort when upgrading versions of angular and cli
- Consider using Angular Cli Environment variables for use with deployment
- Consider Static Hosting on IIS vs Serving via asp.net
- Build configuration management tooling into application for fewer endpoint config headaches
Where we stand
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4609046/lost.jpg)
Summary
![](https://s3.amazonaws.com/media-p.slid.es/uploads/28211/images/4606737/8e7f341f71998b0493bd16455cad2712.jpg)
The Road to DevOps
By Terrance Smith
The Road to DevOps
- 1,464