This document discusses building a continuous delivery pipeline with Visual Studio Team Services. It defines DevOps and key DevOps practices like continuous integration, deployment, and infrastructure as code. Continuous delivery aims to reduce the time between writing code and deploying to production through automation of testing and deployment. Infrastructure as code manages infrastructure using version control and templates. The document demonstrates building a continuous delivery pipeline for an ASP.Net application using Azure Resource Manager templates and Visual Studio Team Services for continuous integration and release management.
Building a Continuous Delivery Pipeline With Visual Studio
1. Building a Continuous
Delivery Pipeline with
Visual Studio Team Services
Kasun Kodagoda
Senior Software Engineer | 99X Technology
https://wpdevkvk.wordpress.com
2. DevOps
DevOps is the union of people, process, and products to enable
continuous delivery of value to our end users.
You cannot buy DevOps and install it. DevOps is not just automation
or infrastructure as code. DevOps is people following a process
enabled by products to deliver value to end users.
- Donovan Brown, Microsoft Principal DevOps Manager
4. Continuous Deployment
• Extension of Continuous Integration
• Aims to reduce the lead time
- Time between writing line of code and that code being used in production
• Relies heavily on Automation
- Testing, Deployment, Configuration Management, EVERYTHING
• No manual approvals
5. Continuous Delivery vs Continuous
Deployment
• Continuous Delivery
• Can be deployed to production at any time.
• Continuous Deployment
• Automatically deployed to production all the time.
Unit Test
Deploy to
Stage
Acceptance
Test
Deploy to
Production
Post Deploy
Test
Auto Auto Auto Auto
Unit Test
Deploy to
Stage
Acceptance
Test
Deploy to
Production
Post Deploy
Test
Auto Auto Manual Auto
7. Importance of Continuous Delivery
• Always production ready
• Reduce the chance of errors
• Less effort in deployment
• Reliable, Repeatable, Consistent
• Fast delivery of functionality
• Release often
• Get feedback early
• More flexibility
8. Infrastructure as Code
• Management of infrastructure using a descriptive model
• Same version control as dev teams
• IaC model generates the same infrastructure every time
• Remove Environment Drift
• Enables versioning of the infrastructure code
• Easy to reproduce production like environments
9. Azure Resource Manager
• Group resources together
• Manage resource dependencies
• Repeatable Deployments
• Use deployment templates
• Fine control with Role Based Access Control (RBAC)
• Granular monitoring and billing
10. ARM Templates
• Used to define infrastructure in Azure
• Uses JSON
• 4 main sections in the ARM Template
- Parameters - optional
- Variables - optional
- Resources - required
- Outputs - optional
• $schema, contentVersion and resources is required