Integración Continua con
TFS 2012
  Ernesto Cárdenas Cangahuala
  Software Engineer, Agilista
  Avantica Technologies
Erase una vez… un desarrollador
En la Universidad
 !En mi casa compilaba!
Durante el Desarrollo
 ¿Qué has hecho ayer en todo el día?
 …Subir el proyecto a preproducción
…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!
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.”
¿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. Cualquiera puede acceder a la versión
actual desplegada y validar que lo que está terminado lo este realmente.
  Reducir el riesgo del proyecto, gracias a la visibilidad de avance.
  Incrementar la autonomía de los Testers. Disponen de los últimos avances
desarrollados disponibles para probar.
  Dedicar menos tiempo a la creación y despliegue de versiones
  Incrementar la confianza entre los usuarios de negocio y el equipo de
proyecto.
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
Entregar los cambios a la línea principal todos los días
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
Automatizar el despliegue
Ok, ¿Cómo logramos eso?
Precisando....
¿Qué es Team Foundation Server?
No es el nuevo SourceSafe
No es SourceSafe sobre SQL Server (bueno, casi)
Mas bien es...
...una solución ALM horizontal
Team Foundation Server 2012
Fácil de desplegar
Fácil de utilizar
Bien integrado a Visual Studio (My Work,Code Review)
Ahora mas flexible para trabajar desde la Web
Workspaces locales
No solo .Net
Team Foundation Service
Escalabilidad en la nube Y
Facilidad de Mantenimiento
Alojado en Azure
Actualizaciones transparentes y
rápidas
Build en la nube

Múltiples proyectos
Se tiene una colección entera

¡Listo para probar!
Server vs. Service
                                           Server   Service
     Work Items, Source Control, & Build
      Agile Product/Project Management
                 Test Case Management
           Heterogeneous Development
      Near-zero setup and administration
 Collaborate with anyone, from anywhere
           Virtual Test Lab Management
                  SharePoint Integration
           Data Warehouse & Reporting
Primeros pasos en CI

Tus Tests y Visual Studio 2012
Arquitectura

  Visual Studio Unit          Command Line           TeamBuild Unit Test
    Test Explorer                Runner                   Activity



                       Visual Studio Unit Test Platform



 MS-Test     MS-Test
                             NUnit      xUnit.net     QUnit     MORE!
 Managed     Native
Usa el framework que quieres usar
Soporte “In the box” para
  lMS-Test Managed

  lMS-Test Native (**New**)

Plugins the 3ros actualmente bajo desarrollo
  lNUnit

  lXunit.Net

  lSQL Server Unit Testing

  l...
Demo
MS Test y NUnit
l
Ahora si....

Integrando continuamente con TFS
Team Foundation Build
 Considerado parte del núcleo de la plataforma TFS 2012
 Muy integrado con otros servicios y características de TFS
    lVersion Control

    lWork Item Tracking

    lTesting

 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
Arquitectura de Team Foundation Build

   Application        Build
      Tier          Controller
                                 Symbol
                                 Server

                     Build
                     Agent


                                  Drop
            Build                Server
Team Build Process
Controlado por un archivo XAML Windows Workflow 4.0
Tres plantillas de proceso “out-of-the-box”
  lDefaultTemplate

  lUpgradeTemplate

  lLabDefaultTemplate (y….)

Almacenado en TFS
Se pueden crear plantillas de build personalizadas
Soporte para Tests en Team Build
lSi el test funciona en VS, funciona en Team Build
      lFrameworks de 3ras partes

      lVisual Studio Fakes Isolation Framework (Nuevo en VS 2012)

      lCode Coverage

lMas…

      lTeam Build en la nube

      lTest Impact Analysis
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
Demo
lHaciendo Build en la nube y desplegando hacia la nube
l¡Alertas!
Bueno, pero.. yo no uso la nube
Prepara tu entorno de Builds
  lLibrerías de 3ros

  lVisual Studio si el proyecto es Web

  lSlow Cheetah

  lPermisos

  lSQL Server Data Tools

Define y Prepara tu(s) entorno(s) de despliegue
  lMS Deploy

  lWeb Sites en IIS (1 por cada entorno de Despliegue)

  lNunca copies .config a mano!

  l/p:DeployOnBuild=true;PublishProfile=MiProfile;Password=xxx;

  lConfigura bien tus Logs
Enlaces útiles
El Bruno
Jersson on the Block!
SedoDream
How to install Web Deploy on Windows Server 2012
Consultor Internet
¡GRACIAS!

Integración Continua usando Team Foundation Server

  • 1.
    Integración Continua con TFS2012 Ernesto Cárdenas Cangahuala Software Engineer, Agilista Avantica Technologies
  • 2.
    Erase una vez…un desarrollador
  • 3.
    En la Universidad !En mi casa compilaba!
  • 4.
    Durante el Desarrollo ¿Qué has hecho ayer en todo el día? …Subir el proyecto a preproducción
  • 5.
    …Mantenimiento ¡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!
  • 6.
    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.”
  • 7.
    ¿Que perseguimos conla 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. Cualquiera puede acceder a la versión actual desplegada y validar que lo que está terminado lo este realmente. Reducir el riesgo del proyecto, gracias a la visibilidad de avance. Incrementar la autonomía de los Testers. Disponen de los últimos avances desarrollados disponibles para probar. Dedicar menos tiempo a la creación y despliegue de versiones Incrementar la confianza entre los usuarios de negocio y el equipo de proyecto.
  • 8.
    Practicas de IntegraciónContinua 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 Entregar los cambios a la línea principal todos los días 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 Automatizar el despliegue
  • 9.
  • 10.
    Precisando.... ¿Qué es TeamFoundation Server? No es el nuevo SourceSafe No es SourceSafe sobre SQL Server (bueno, casi) Mas bien es...
  • 11.
  • 12.
    Team Foundation Server2012 Fácil de desplegar Fácil de utilizar Bien integrado a Visual Studio (My Work,Code Review) Ahora mas flexible para trabajar desde la Web Workspaces locales No solo .Net
  • 13.
    Team Foundation Service Escalabilidaden la nube Y Facilidad de Mantenimiento Alojado en Azure Actualizaciones transparentes y rápidas Build en la nube Múltiples proyectos Se tiene una colección entera ¡Listo para probar!
  • 14.
    Server vs. Service Server Service Work Items, Source Control, & Build Agile Product/Project Management Test Case Management Heterogeneous Development Near-zero setup and administration Collaborate with anyone, from anywhere Virtual Test Lab Management SharePoint Integration Data Warehouse & Reporting
  • 15.
    Primeros pasos enCI Tus Tests y Visual Studio 2012
  • 16.
    Arquitectura VisualStudio Unit Command Line TeamBuild Unit Test Test Explorer Runner Activity Visual Studio Unit Test Platform MS-Test MS-Test NUnit xUnit.net QUnit MORE! Managed Native
  • 17.
    Usa el frameworkque quieres usar Soporte “In the box” para lMS-Test Managed lMS-Test Native (**New**) Plugins the 3ros actualmente bajo desarrollo lNUnit lXunit.Net lSQL Server Unit Testing l...
  • 18.
  • 19.
  • 20.
    Team Foundation Build Considerado parte del núcleo de la plataforma TFS 2012 Muy integrado con otros servicios y características de TFS lVersion Control lWork Item Tracking lTesting 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
  • 21.
    Arquitectura de TeamFoundation Build Application Build Tier Controller Symbol Server Build Agent Drop Build Server
  • 22.
    Team Build Process Controladopor un archivo XAML Windows Workflow 4.0 Tres plantillas de proceso “out-of-the-box” lDefaultTemplate lUpgradeTemplate lLabDefaultTemplate (y….) Almacenado en TFS Se pueden crear plantillas de build personalizadas
  • 23.
    Soporte para Testsen Team Build lSi el test funciona en VS, funciona en Team Build lFrameworks de 3ras partes lVisual Studio Fakes Isolation Framework (Nuevo en VS 2012) lCode Coverage lMas… lTeam Build en la nube lTest Impact Analysis
  • 24.
    Reforzando el factorhumano 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
  • 25.
    Demo lHaciendo Build enla nube y desplegando hacia la nube l¡Alertas!
  • 26.
    Bueno, pero.. yono uso la nube Prepara tu entorno de Builds lLibrerías de 3ros lVisual Studio si el proyecto es Web lSlow Cheetah lPermisos lSQL Server Data Tools Define y Prepara tu(s) entorno(s) de despliegue lMS Deploy lWeb Sites en IIS (1 por cada entorno de Despliegue) lNunca copies .config a mano! l/p:DeployOnBuild=true;PublishProfile=MiProfile;Password=xxx; lConfigura bien tus Logs
  • 27.
    Enlaces útiles El Bruno Jerssonon the Block! SedoDream How to install Web Deploy on Windows Server 2012 Consultor Internet
  • 28.