Integración y Entrega Continua con Visual Studio Online
-
Upload
ernesto-cardenas -
Category
Technology
-
view
526 -
download
4
description
Transcript of Integración y Entrega Continua con Visual Studio Online
Integración y Entrega Continua con Visual Studio OnlineErnesto Cárdenas CangahualaSenior Software Engineer| Avantica Technologies@fisica3
Presentación
• Ing. Informático• SSE Avantica Technologies• Fotógrafo aficionado• Algún tiempo “fuera” ;)• @agileperu
Erase una vez… un desarrollador
En la Universidad
• !En mi casa compilaba!
• ¿Qué has hecho ayer en todo el día?• …¡Subir el proyecto a preproducción!
Durante el Desarrollo
• ¡La web de producción esta grabando en la BD de preproducción!
• Este… ayer subí la corrección de un bug….
• ¡Además ahora las formulas dan valores incorrectos!
… Mantenimiento
¡Busquemos una salida!
Integración Continua
• Martin Fowler:“La integración continua es una práctica de desarrollo de software en la cuál los miembros de un equipo integran su trabajo frecuentemente, como mínimo de forma diaria. Cada integración se verifica mediante una herramienta de construcción automática para detectar los errores de integración tan pronto como sea posible.”
¿Qué perseguimos con la CI?
• Tener un proyecto “sano y funcionando” siempre• Mayor confianza del equipo y de los stakeholders
¿Y si damos un paso mas?
•Valor es Software funcionando en manos del usuario ¿verdad?•Entonces nuestro siguiente objetivo es la Entrega Continua
¿Qué lograremos con todo eso?
• Tener un proyecto “sano y funcionando” siempre• Mayor confianza del equipo y de los stakeholders• No dedicar tiempo excesivo a la integración y
despliegue• Mayor visibilidad y feedback continuo (QA) -> menos riesgos
Primero veamos los pilares
Versionado
Código+
Configuración+
Datos+
Scripts
Automatización
- tiempo- trabajo manual- errores
+ conocimiento
• Mantener un único repositorio de código fuente
• Automatizar la construcción, validación y despliegue del proyecto de manera rápida (¡un clic!)
• Que sea fácil probar la ultima versión en una replica del entorno de producción
• Publicar qué está pasando (alertas!!!)
Practicas para el día a día
Ok, ¿cómo lo logramos?
Empecemos con una visión inicial
Aterrizando la teoría
Team Foundation Build
• Considerado parte del núcleo de la plataforma TFS/VSO
• Los miembros del equipo pueden ser notificados del estado de la build, para prevenir checkin que no sean correctivos
• MSBuild hace el “building”, Windows Workflow hace la orquestación
• Extensible: Soporte Java, Maven, Ant vía TFS Build Extensions
Arquitectura de Team Foundation Build
Application Tier
Build Controller
Build Agent
Drop Server
Build
Esto, traducido a VSO/Azure…
• Controlado por un archivo XAML Windows Workflow 4.0
• Tres plantillas de proceso “out-of-the-box”• DefaultTemplate (ahora con versión Git!)• Almacenado en TFS• Se pueden crear plantillas de build
personalizadas
Team Build Process
Demo
Principios para el desarrollador
• Diseña características apagables!!• Contribuye a menudo (código sano!)• Soluciona los build rotos inmediatamente• Escribe tests automáticos• Todos los tests deben pasar
Llegados a este punto…
• ¿Cuanto le tomaría a tu organización desplegar un cambio que involucre tan solo una línea de código?• ¿Lo haces de una
manera confiable y reproducible?
Mary & Tom Poppendieck
Todo eso esta muy pero…
• Yo tengo que desplegar en local!
Entonces… otro escenario
Ingredientes
• TFS Controller/Agent 2013• Publish Profiles• .config Transformations• MS Web Deploy
Mejor veamoslo en acción
Reforzando el factor humano
• Establecer políticas de contribución, ramificación y Code Review
• Configurar bien las alertas• Detenerse cuando la Build se cae• Si se cae la Build no es el fin del mundo• Antes de hacer commit, Get latest versión y probar en
local• Probar en ambiente de Integración• Validar siempre la actualización del Modelo de BD• Considerar CodeAnalysis, StyleCop y opcionalmente
convertir warning en errors
Caso real
• DEV1: Solo compila y corre tests, ejecutada automáticamente• DEV2: DEV1+Despliegue en DEV, cada hora (si
hay cambios)• QA: DEV1 + Despliegue en QA, cada 6 horas• Staging: DEV1 + Empaquetado automatico para
despliegue manual, bajo demanda
¡Cada una con sus propias configuraciones!
Enlaces útiles
• El Bruno• Jersson on the Block!• SedoDream• How to install Web Deploy on Windows Server 2
012• Consultor Internet
¿Preguntas?