ci/cd for asp.net core apps using docker
TRANSCRIPT
CI/CD for ASP.Net Core apps using DockerDotnet Bangalore Meetup,
11/26/2016
@svswaminathan
wannabeegeek.com
swami@ wannabeegeek.com
Swaminathan Vetri• Senior Engineer @ Target• Microsoft MVP - Visual Studio &
Development technologies• Windows/Web/Cross platform
mobile developer• Blogger, Speaker, Amateur
photographer, Gadget freak
Agenda• What is CI / CD ?• What is Docker ?• Build Docker Images for asp.net core apps• Docker-Compose for orchestrating multi container
applications• CI/CD tools and practices for containerized asp.net
applications
Continuous Integration
CI
Commit
Build
Test
Report
Continuous Deployment
CD
Commit
Build
TestReport
Release
Popular CI/CD Tools• Jenkins• Travis CI• Circle CI• Appveyor• MSTFS/ VSTS• GO• Bamboo• Buildbot• many more and more…
DockerBuild | Ship | Run
VMs vs Containers
Host OS - HardwareHyper Visor
Guest OS #1 (Virtual Machine) Guest OS #2
Docker Daemon
Server
Host OS
Hypervisor
Server
Host OS
Docker Engine
Guest OS
Guest OS
Guest OS
Bins/Libs
Bins/Libs
Bins/Libs
App A App A’ App B
Bins/Libs Bins/Libs
App A
App A’
App B
App B’
App B
App B’
App B
App B’
Containers are isolated, but share OS and, where appropriate, bins/libraries
Docker offerings• Docker Daemon – Process that runs containers within• Docker CLI – Command line utility to interact with
docker apis• Docker Machine – API to create/manage Docker hosts• Docker Compose – API to orchestrate containerized
applications• Docker Swarm – Container Cluster running multiple
containers• Docker Registry – Registry to maintain Docker images
Docker Demo
Container DevOps Workflow
Build/CI,Integrate,
Test
Monitor and Diagnose
Productionenvironments
Run, Manage
Container Service
Service Fabric
Batch
App Services
coming soon
…
…
Azure Container Registry
Code
Run
Validate
Debug
Inner-Loop
CD, Deploy
Source Code
Control(SCC)
• ASP.NET • In Container Development• Edit & Refresh• Breakpoint Debugging
Integration
Azure Container Registry
Production
Staging
Test
Visual Studio Code
Write/Edit
Run
Debug
Visual Studio Team Services• Source Code Control• Build • Continuous Integration• 3rd Party Integration:
VSTS Build Agents w/ Docker
• VM Scale Sets• Azure Container Service• Azure Hosted Docker Private Registry
Azure Container Service
Visual Studio
• Docker Language Services• Docker Scaffolding w/yo docker
public registry
.NET Core
Orc
hest
ratio
n &
Sch
edul
ing
- M
arat
hon
/ Doc
ker S
war
m
CI/CD ToolsInner Dev Loop• Docker Tools for
Visual Studio• Docker Tools for
Visual Studio Code
Build• VSTS • Docker Tools for
VSTS
Deploy/Run/Manage
• Azure Container Registry
• Azure Container Service
• Azure CLI
Visual Studio Docker Tools• Run, Debug, Test Web & Console
apps in docker containers• Linux today, Windows Server & Nano Server coming soon
• F5 Debugging• Edit & Refresh of code• Scaffolds docker assets
• Dockerfile, docker-compose.yml
aka.ms/DockerToolsForVS
VS Code Docker Extension• Intellisense and code
snippets for Dockerfile and DockerCompose.yml
• Docker tasks for debugging
aka.ms/DockerToolsForVSCode
VSTS Docker Extension• Exposes build tasks• Build an image• Push an image to Docker
registry• Run Docker images in
container• Orchestrate Multi container
Docker application• Deploy to Azure Container
Servicehttps://marketplace.visualstudio.com/items?itemName=ms-vscs-rm.docker
Azure Container Service• Create a container hosting solution optimized for
Azure• Use popular open source, client-side tooling• Scale and orchestrate applications using DC/OS or
Docker Swarm• Migrate container workloads to and from Azure
without code changes• Manage container applications using familiar tools
Azure Container Registry (preview)
• Keep Your Images Private• Stored in Azure with your resources
• Network-Close• Deployed to your targets within the same data center• No ingress/egress fees or latency
• Azure Active Directory Integration• Manage registry access using AAD
• Familiar Open Source CLIs• docker login, pull, push
Azure CLI 2.0 (preview)• Cross platform CLI to
interact with Azure• Easy to create Azure
resources from command line
CI/CD Demo
References• Creating custom build agent in VSTS
• http://donovanbrown.com/post/Building-a-Linux-Based-Visual-Studio-Team-Service-Build-Machine-with-Docker-Support
• Creating VSTS build definitions for Docker Tasks • https://blogs.msdn.microsoft.com/jcorioland/2016/08/19/build-push-and-ru
n-docker-images-with-visual-studio-team-services/• Azure Container service
• https://docs.microsoft.com/en-us/azure/container-service/• Azure Container Registry
• https://azure.microsoft.com/en-us/services/container-registry/• Azure CLI
• https://github.com/Azure/Azure-cli• Docker + Asp .NET core Presentation Slides
• https://github.com/SteveLasker/Presentations• Video tutorials
• https://channel9.msdn.com/Search?term=docker#ch9Search&lang-en=en
Thank You!!!
Questions/Feedback : @svswaminathan | [email protected]