Post on 31-Dec-2014
Integración Integración ContinuaContinuaAltNetHispanoAltNetHispano
Vicenç Garcia (@vgaltes)http://devnettips.blogspot.com/
Carlos Peix (@carlospeix)http://carlospeix.com/Andres Vettori (@andresvettori)http://weblogs.asp.net/andresvJose F. Romaniello (@jfroma)http://jfromaniello.blogspot.com/
22
AgendaAgenda
Integración automatizadaIntegración automatizada ElementosElementos Políticas de releasePolíticas de release Políticas de branchingPolíticas de branching
33
Integración automatizadaIntegración automatizada
¿Por qué?¿Por qué?– Reduce riesgosReduce riesgos– Reduce trabajo repetitivoReduce trabajo repetitivo– Evita pérdida de tiempo corriendo Evita pérdida de tiempo corriendo
pruebaspruebas– Facilita tener el software “siempre listo”Facilita tener el software “siempre listo”– Maximiza la visibilidad sin esfuerzoMaximiza la visibilidad sin esfuerzo– Genera confianza en el equipo y el clienteGenera confianza en el equipo y el cliente
44
Integración automatizadaIntegración automatizada
¿Cómo? ¿Cuándo?¿Cómo? ¿Cuándo?– Al principio del proyectoAl principio del proyecto– Primero lo mas sencillo, luego agregoPrimero lo mas sencillo, luego agrego– Sobre un servidor dedicado (Fuera VS!!!)Sobre un servidor dedicado (Fuera VS!!!)– Todos monitorean (CCTray o similar)Todos monitorean (CCTray o similar)
55
ElementosElementos
Source controlSource control Build automationBuild automation Build scheduler (CruiseControl.NET, Build scheduler (CruiseControl.NET,
TeamCity, Hudson, TFS)TeamCity, Hudson, TFS) Políticas de branchingPolíticas de branching Practicas relacionadasPracticas relacionadas
ElementosElementos
66
77
Source controlSource control
Elegir la herramienta correctaElegir la herramienta correcta– SubversionSubversion– Git o Hg (distribuidos)Git o Hg (distribuidos)– TFSTFS– src-2010-01-03.zip no es source control!src-2010-01-03.zip no es source control!– Source Safe ya dejémoslo tranquilo!Source Safe ya dejémoslo tranquilo!
Elegir una política de branching Elegir una política de branching adecuada a la política de releaseadecuada a la política de release
88
Build automationBuild automation
Es la parte mas importante!Es la parte mas importante! NAnt, MSBuild, Maven, PowerShell?NAnt, MSBuild, Maven, PowerShell? Todas las herramientas se parecenTodas las herramientas se parecen Todas son extensiblesTodas son extensibles Elijan la que mas les gusteElijan la que mas les guste Ejemplo…Ejemplo…
99
Build schedulerBuild scheduler
CruiseControl.NET, TFS, TeamCity, HudsonCruiseControl.NET, TFS, TeamCity, Hudson Por lo menos tiene que saber leer el Por lo menos tiene que saber leer el
repositorio y disparar el buildrepositorio y disparar el build Casi todosCasi todos
– muestran estadísticasmuestran estadísticas– muestran el resultado del build bien detalladomuestran el resultado del build bien detallado– avisan cuando algo salió malavisan cuando algo salió mal
Ejemplo…Ejemplo…
1010
Prácticas relacionadasPrácticas relacionadas
Commits frecuentesCommits frecuentes Colective Code OwnershipColective Code Ownership Commits frecuentesCommits frecuentes Unit testingUnit testing Commits frecuentesCommits frecuentes Test para los bugsTest para los bugs Commits frecuentesCommits frecuentes
1111
Políticas de branchingPolíticas de branching
Lo tradicional: trunk/tags/branchesLo tradicional: trunk/tags/branches Dependen de la política de releaseDependen de la política de release
– Software que se distribuye: Software que se distribuye: potencialmente se requiere dar soporte a potencialmente se requiere dar soporte a mas de una versiónmas de una versión
– Software que se ofrece como servicio Software que se ofrece como servicio (SaaS): suele mantenerse una única (SaaS): suele mantenerse una única versiónversión
Un ejemploUn ejemplo
1212
Otro ejemploOtro ejemplo
1313
ReferenciasReferencias
http://martinfowler.com/bliki/FeatureBranch.htmlhttp://martinfowler.com/bliki/FeatureBranch.html http://www.cmcrossroads.com/bradapp/acme/branching/branch-policy.htmlhttp://www.cmcrossroads.com/bradapp/acme/branching/branch-policy.html http://publib.boulder.ibm.com/infocenter/cchelp/v7r0m1/index.jsp?topic=/http://publib.boulder.ibm.com/infocenter/cchelp/v7r0m1/index.jsp?topic=/
com.ibm.rational.clearcase.cc_proj.doc/c_bntr_plnbrstrat.htmcom.ibm.rational.clearcase.cc_proj.doc/c_bntr_plnbrstrat.htm http://martinfowler.com/articles/continuousIntegration.htmlhttp://martinfowler.com/articles/continuousIntegration.html http://integratebutton.com/http://integratebutton.com/
1414
1515
PreguntaPreguntass??
Vicenç Garcia (@vgaltes)http://devnettips.blogspot.com/
Carlos Peix (@carlospeix)http://carlospeix.com/Andres Vettori (@andresvettori)http://weblogs.asp.net/andresvJose F. Romaniello (@jfroma)http://jfromaniello.blogspot.com/