Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
Integracion Continua
Material preparado por Rubby Casallas
Departamento de Sistemas y Computación
Universidad de los Andes, Bogotá
http://www.martinfowler
.com/articles/continuou
sIntegration.html (10
September
2000: Original version
published.)
Material preparado por Rubby Casallas
Contexto:
Proyectos grandes
(cientos, miles,
millones, .. ) de líneas
de código
Material preparado por Rubby Casallas
Contexto:
Material preparado por Rubby Casallas
Grupos de trabajo de
varios desarrolladores
(5, 10, 30, …)
5
Qué es “Integración” ?
Material preparado por Rubby Casallas
División del trabajo,
usualmente grupos
distintos
7
Qué es “Integración” ?
Material preparado por Rubby Casallas
Cada grupo
produce una
“pieza” distinta
8
Qué es “Integración” ?
Material preparado por Rubby Casallas
Juntar las “piezas”
par que todo encaje
y funcione.
9
Proceso de integración puede
ser muy largo e impredecible
(“Integration Hell”):
Cuándo termina?
Cuánto falta?
Cuál es la calidad del resultado?
Material preparado por Rubby Casallas
Qué sucede si el proceso de
desarrollo está separado del de
integración?
Material preparado por Rubby Casallas
Se puede descubrir
tardíamente problemas de
entendimiento de los
requerimientos, la
arquitectura, …
…. “los pedazos no
pegan”
Material preparado por Rubby Casallas
Cliente o UsuarioDesarrollador
12
Material preparado por Rubby Casallas
Correcciones en esta
etapa, sobre problemas
introducidos en etapas
anteriores, son más costos
de corregir y puede crear
nuevos problemas
Desarrollador Cliente o Usuario
$$
13
La calidad del software
es difícil de asegurar
Las pruebas se ven
comprometidas porque
aparecen muy tarde en
el desarrollo
Material preparado por Rubby Casallas
Integración Continua: los comienzos
… Es una práctica que nació con eXtreme
Programming
Inicialmente se quería usarlo en combinación
con las pruebas unitarias automáticas:
Antes de hacer commit sobre la rama principal del
proyecto, todas las pruebas deberían ser exitosas
El objetivo era evitar que el trabajo de algún “en-
progreso” desarrollador dañara lo de otro
Material preparado por Rubby Casallas
Material preparado por Rubby Casallas
t1
Trae a su espacio de
trabajo la aplicación, la
integra y la prueba
localmente17
Material preparado por Rubby Casallas
t2 “commit” con la pieza
integrada y probada
18
IC: Prácticas
1. Utilizar un depósito para el código central
para los artefactos del proyecto
2. Automatizar la construcción del ejecutable
(el “build”)
3. Construir el ejecutable y luego hacer que se
pruebe automáticamente
4. Cada integrante hace commit cada día
5. Cada commit debe producir un nuevo build
y un proceso de pruebasMaterial preparado por Rubby Casallas
IC: Prácticas (cont.)
6. Probar en un clone del ambiente de
producción
7. Hacer fácil la obtención de los últimos
entregables
8. Cada uno puede ver los resultados del
último build
9. Automatizar el despliegue
Material preparado por Rubby Casallas
Principios Herramientas
Utilizar un depósito central para el código
del proyecto
CVS, SVN, ClearCase, Control de
versiones de Team Foundation (TFVC),
Git,…
Automatizar (el “build”) la construcción del
ejecutable
make, ant, gradle, Nmaven, nuget,
maven,..
Hacer un build que se pruebe de forma
automática
Arquilian, glassfish embebido, ..
Cada commit debe producir un nuevo
build y un proceso de pruebas
Hudson, Jenkis, Team Foundation Server
Cada uno puede ver los resultados del
último build
Hudson, Sonar, Jenkis, ..
Material preparado por Rubby Casallas
IDE: Netbeans, Eclipse, Visual Studio
Git, SVN, CVS
Build
makers:
maven, ant
Build
makers:
maven, ant
Métricas de código:
Sonar, parasoft, jasca,…
Server de
IC:
Hudson,
jenkis,…
Tests: junit, arquilian, selenium, mockito,
podam, rest-assured,…
Deposito de
artefactos:
Nexus,
Artifact, ..
Hudson/Jen
kis, Sonar,
BugTracker:
Jira, mantis
Scripts sql,
podam
Sonar,
jcoverage
Material preparado por Rubby Casallas
Ambiente Local
Build
makers:
maven,
ant, make
Deposito de
artefactos:
Nexus,
Artifact,
maven
repository,
.. Tests: junit, arquilian, selenium, mockito,
podam, rest-assured,…
Material preparado por Rubby Casallas