23
Integración Continua …¿Por qué? ¿Como? Ernesto Cárdenas Cangahuala (@fisica3) Software Engineer, Agilista, fotografo aficionado

Una introducción a la Integración continua

Embed Size (px)

DESCRIPTION

Presentación hecha en el Agile Open Lima VII en la Pontificia Universidad Católica del Perú, se introduce la necesidad de la Integración Continua en los procesos de desarrollo asi como los conceptos basicos alrededor de ella

Citation preview

Page 1: Una introducción a la Integración continua

Integración Continua …¿Por qué? ¿Como?

Ernesto Cárdenas Cangahuala (@fisica3)

Software Engineer, Agilista, fotografoaficionado

Page 2: Una introducción a la Integración continua

Erase una vez… un desarrollador

Page 3: Una introducción a la Integración continua

En la Universidad

!En mi casa compilaba!

Page 4: Una introducción a la Integración continua

Durante el Desarrollo

¿Qué has hecho ayer en todo el día?

…Subir el proyecto a preproducción

Page 5: Una introducción a la Integración continua

…Mantenimiento

¡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!

Page 6: Una introducción a la Integración continua

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.”

Page 7: Una introducción a la Integración continua

¿Que perseguimos con la CI?Ser capaces de controlar la “salud” de nuestro proyecto durante todo el ciclo

de desarrollo y mantenimiento

Que el código que hay en nuestro repositorio “Funcione”

Invertir menos tiempo en integración.

Incrementar la visibilidad del proceso, feedback inmediato.

Reducir el riesgo del proyecto, gracias a la visibilidad de avance.

Incrementar la autonomía de los Testers, que prueben siempre lo ultimo

Dedicar menos tiempo a la creación y despliegue de versiones

Incrementar la confianza entre los usuarios de negocio y el equipo de

proyecto.

Page 8: Una introducción a la Integración continua

Practicas de Integración Continua

Mantener un único repositorio de código fuente

Automatizar la construcción del proyecto

Hacer que la construcción del proyecto ejecute sus propios tests

Construir la línea principal en la máquina de integración

Mantener una ejecución rápida de la construcción del proyecto

Probar en una réplica del entorno de producción

Hacer que todo el mundo pueda obtener el último ejecutable de forma fácil

Publicar qué está pasando (alertas!!!)

Automatizar el despliegue

Page 9: Una introducción a la Integración continua

Ok, ¿Cómo logramos eso?

Page 10: Una introducción a la Integración continua

Una visión general

Page 11: Una introducción a la Integración continua

Elementos

Repositorio: Subversion, Mercurial, TeamFoundation Server, Git

Servidor: Hudson/Jenkins, Team Foundation Server, Bamboo, TeamCity

Reglas: ANT, Nant, MSBuild/XAML

Entorno(s) de despliegue: Web, Windows…

Page 12: Una introducción a la Integración continua

Team Foundation Build Considerado parte del núcleo de la plataforma TFS 2012

Muy integrado con otros servicios y características de TFS

Version Control

Work Item Tracking

Testing

Permite análisis de tendencias históricas

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

Page 13: Una introducción a la Integración continua

Arquitectura de Team Foundation Build

Application

Tier

Build

Controller

Build

Agent

Symbol

Server

Drop

ServerBuild

Page 14: Una introducción a la Integración continua

Team Build Process

Controlado por un archivo XAML Windows Workflow4.0

Tres plantillas de proceso “out-of-the-box”

DefaultTemplate

UpgradeTemplate

LabDefaultTemplate (y….)

Almacenado en TFS

Se pueden crear plantillas de build personalizadas

Page 15: Una introducción a la Integración continua

Definiendo nuestra Build

Page 16: Una introducción a la Integración continua

Parametrizando

Page 17: Una introducción a la Integración continua

Revisión inmediata

Page 18: Una introducción a la Integración continua

Upss… un error

Page 19: Una introducción a la Integración continua

Seguimiento historico

Page 20: Una introducción a la Integración continua

Principios para el desarrollador

Contribuye a menudo

No contribuyas código roto

Soluciona los build rotos inmediatamente

Escribe tests automáticos

Todos los tests deben pasar

Page 21: Una introducción a la Integración continua

Reforzando el factor humano

Establecer políticas de Check-in, shelve 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 check-in, 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

Page 22: Una introducción a la Integración continua

¿Preguntas?