integración y entrega continua con visual studio online

Post on 31-May-2015

526 Views

Category:

Technology

4 Downloads

Preview:

Click to see full reader

DESCRIPTION

Charla presentada en el DevDays 2014 (http://www.comunidadesmicrosoft.org/detalles-de-developer-days-2014) presentando la necesidad de Integración y Entrega Continua, y el como Visual Studio Online nos facilita el poder desplegar nuestros proyectos a la nube y a entornos on premise. Cualquier duda consultarme en twitter via @fisica3

TRANSCRIPT

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!

¿Preguntas?

top related