Integración y
Entrega
Continua con
Visual Studio
Online
Ernesto Cárdenas Cangahuala
Senior Software Engineer|
Avantica Technologies
@fisica3
Presentación
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
Automatización
• 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 2012
• Consultor Internet
¿Preguntas?
Integración y Entrega Continua con Visual Studio Online

Integración y Entrega Continua con Visual Studio Online

  • 2.
    Integración y Entrega Continua con VisualStudio Online Ernesto Cárdenas Cangahuala Senior Software Engineer| Avantica Technologies @fisica3
  • 3.
  • 4.
    Erase una vez…un desarrollador
  • 5.
    En la Universidad •!En mi casa compilaba!
  • 6.
    • ¿Qué hashecho ayer en todo el día? • …¡Subir el proyecto a preproducción! Durante el Desarrollo
  • 7.
    • ¡La webde 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
  • 8.
  • 9.
    Integración Continua • MartinFowler:“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.”
  • 10.
    ¿Qué perseguimos conla CI? • Tener un proyecto “sano y funcionando” siempre • Mayor confianza del equipo y de los stakeholders
  • 11.
    ¿Y si damosun paso mas? •Valor es Software funcionando en manos del usuario ¿verdad? •Entonces nuestro siguiente objetivo es la Entrega Continua
  • 12.
    ¿Qué lograremos contodo 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
  • 13.
  • 14.
  • 15.
  • 16.
    • 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
  • 17.
    Ok, ¿cómo lologramos?
  • 18.
  • 19.
  • 20.
    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
  • 21.
    Arquitectura de TeamFoundation Build Application Tier Build Controller Build Agent Drop Server Build
  • 22.
    Esto, traducido aVSO/Azure…
  • 23.
    • Controlado porun 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
  • 24.
  • 25.
    Principios para eldesarrollador • 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
  • 26.
    Llegados a estepunto… • ¿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
  • 27.
    Todo eso estamuy pero… • Yo tengo que desplegar en local!
  • 28.
  • 29.
    Ingredientes • TFS Controller/Agent2013 • Publish Profiles • .config Transformations • MS Web Deploy
  • 30.
  • 31.
    Reforzando el factorhumano • 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
  • 32.
    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!
  • 33.
    Enlaces útiles • ElBruno • Jersson on the Block! • SedoDream • How to install Web Deploy on Windows Server 2012 • Consultor Internet
  • 34.