Este documento presenta conceptos avanzados de compilación e integración continua utilizando Team Foundation Server. Explica los pasos para crear versiones del software, incluyendo obtener fuentes, compilar, analizar, probar y archivar. También describe cómo utilizar herramientas como MSBuild, FxCop y TeamBuild para compilar, analizar código y realizar pruebas como parte de un proceso de integración continua.
1. INTEGRACIÓN CONTINUA CON
TEAM FOUNDATION SERVER
http://blogs.msdn.com/rido
Conceptos Avanzados de compilación
Madrid 20070628
2. Introducción
Trabajo en equipo
Integrar componentes
¿Quien integra?
¿Cuando se integra?
Developer
¿Cuánto tardo? Solution
Infrastructure Architect
¿Cómo se verifica? Architect
Generar una versión
Compilación
Tester
Probar una versión Project Manager
End User
Visibilidad del progreso
3. Agenda
ALM/SDLC
BUILD
Pruebas y Entornos
Herramientas
Integración Continua con TFS
4. ALM=Application Lifecycle Management
Process/Governance
Project Governance Dev Methodology (SDLC) Ent Arch Standards Architectural Governance
Project Determination Dev Standards/Policies Secure Dev Lifecycle
Compliance (SOX)
Release Management
Develop Mgmt
Mgmt
Project Mgmt Requirements SCM/Build Mgmt Test Mgmt
PMO Enterprise P&P
Requirements Elicitation Build Management Test Strategy
Portfolio Mgmt Software Factories
Requirements Mgmt SCM Management Test Cases
Continuous Integration
Risk Mgmt Coding Best Practices
Business Archi (Motion) Unit Testing
Task Management Code Review Process
Business Analyst Test Deployment System Testing
KPI and Scorecards Refactoring Gated Build Process Incremental Testing
Communication Mgmt Documentation Best Prac Testing KPI’s
Build Manager
Project Manager User Acceptance Testing
SCM Manager
Secure Dev Best Prac
DB Development Performance Testing
Test Manager
Developer
DBA
Install/Setup
Workflow Engine
ALM Platform Operations ALM Platform Monitoring
Security Implementation
ALM System Integration
Operations Role Guidance Platform Capacity Mgmt
Platform Design/Topology
Migration/Integration
Infrastructure/Operations
5. ALM=Application Lifecycle Management
Process/Governance
Project Governance Dev Methodology (SDLC) Ent Arch Standards Architectural Governance
Project Determination Dev Standards/Policies Secure Dev Lifecycle
Compliance (SOX)
Release Management
Develop Mgmt
Mgmt
Project Mgmt Requirements SCM/Build Mgmt Test Mgmt
PMO Enterprise P&P
Requirements Elicitation Build Management Test Strategy
Portfolio Mgmt Software Factories
Requirements Mgmt SCM Management Test Cases
Continuous Integration
Risk Mgmt Coding Best Practices
Business Archi (Motion) Unit Testing
Task Management Code Review Process
Business Analyst Test Deployment System Testing
KPI and Scorecards Refactoring Gated Build Process Incremental Testing
Communication Mgmt Documentation Best Prac Testing KPI’s
Build Manager
Project Manager User Acceptance Testing
SCM Manager
Secure Dev Best Prac
DB Development Performance Testing
Test Manager
Developer
DBA
Install/Setup
Workflow Engine
ALM Platform Operations ALM Platform Monitoring
Security Implementation
ALM System Integration
Operations Role Guidance Platform Capacity Mgmt
Platform Design/Topology
Migration/Integration
Infrastructure/Operations
6. SDLC=SoftwareDevelopmentLifeCycle
¿Cómo se construye el software?
Proceso continuo
Análisis, Diseño, Desarrollo, Pruebas
Código Fuente
Esel entregable más importante
Gestionar el cambio
Repositorio
Concepto de versión
9. Escenario
Gestionar los usuarios de una aplicación web:
Registro de usuarios (Nombre, contraseña, Email)
Almacén en SQLServer
Cifrar contraseñas
Validar Credenciales
Contraseñas Fuertes
Validar email
Comprobar que el email existe
Si falla el registro indicar porqué
Validación de usuarios
Usuario/Contraseña
13. Agenda
ALM/SDLC
BUILD
Pruebas y Entornos
Herramientas
Integración Continua con TFS
14. Pasos para crear una versión
Obtener Compilar Analizar Probar Archivar
Fuentes
15. Obtener Fuentes Obtener Compilar Analizar Probar Archivar
Fuentes
No es sólo el código “compilable”
El árbol
lib,src,db,tools
Las referencias
internas, externas
La base de datos
esquema, datos
La configuración
Urls, Paths
El contenido
htm, img
Herramientas
extensiones a la build
18. Probar Obtener Compilar Analizar Probar Archivar
Fuentes
Pruebas unitarias
Sólo prueban el código
Pruebas de integración
Prueban parte del sistema
Pruebas de rendimiento
Situaciones límite
Pruebas de aceptación
El cliente acepta el producto
19. Archivar Obtener Compilar Analizar Probar Archivar
Fuentes
Etiquetar
Build correcta
Fuentes
Binarios
Informes
Análisis de código
Pruebas, tiempos
Build incorrecta
Motivo del error
Detalle del error
Diferencias con la última build correcta
20. Anatomía de una build
Obtener Asociar Asociar
UnitTest Instalable
Fuentes Cambios Funcionalidad
Definir
Montar Árbol CodeMetrics Instalar Enviar Alertas
Calidad
Referencias CodeRules Configurar Etiquetar
Compilar Integration
Base de datos Archivar
Release Test
Compilar
Versionar LoadTest Reports
Debug
26. Agenda
ALM/SDLC
BUILD
Pruebas y Entornos
Herramientas
Integración Continua con TFS
27. Herramientas
Objetivo Herramientas Comunidad Herramienta MS
Compilar NAnt (csc.exe) MSbuild (csc.exe) / devenv
Pruebas NUnit MSTest / TeamBuild
Análisis Estático FxCop* FxCop
Integración Continua CruiseControl.Net Team Foundation
28. Visual Studio Team System
Solución ALM (Application Lifecycle Management)
Desarrollador Profesional de
Diseñador
Base de Datos
Arquitecto
Probador
Analista de Jefe de
Negocio Proyectos
Incrementar la Facilitar la Mejorar la
Transparecia en Colaboración en Calidad del
Proyectos Equipo Software
29. Visual Studio Team System
Visual Studio Team Suite
Software Software Database
Software
Guía y Proceso Microsoft Solution Framework (MSF)
Visual Visual
Architects Developers Professionals
Testers
Studio Studio
Team Industry
Modelado de Análisis de Código Pruebas Manuales Despliegue de BD
Explorer Partners
Aplicación
Pruebas de Carga Gestión de Cambios
Ajuste de
Modelado de de BD
Rendimiento
Infraestructura Gestión de Casos de
Pruebas de BD
Prueba
Modelado de
Despliegue
Pruebas Unitarias
Cobertura de Código
Modelado Clases
Visio y Modelado UML
Visual Studio Professional Edition
Load Test Agent
Code Control Proxy
Visual Studio Team Foundation Server Gestión de Proyecto
Control de Código
Informes Servicio de Integración
Gestión del Cambio (Team Build)
Portal de Proyecto
(Workitem Tracking)
30. Arquitectura Técnica de TFS
Team Foundation Client Tier Version Control Build Machine
Proxy Server
MS Project
Visual Studio Packages Version
Plug-In Build
Control
Process
Proxy
MS Excel Service
Internet Explorer
Plug-In
SQL RS WSS VSTF
Team Foundation Object Model
Proxies Proxies Report Client
Clients of VSTF
VSTF Adjuncts
Custom reporting
Team Foundation App Tier tools
Work Item Version Team
Core
SQL Windows
Adapters
Tracking Control Build
Reporting SharePoint Services MS Excel
Service Service Service
Services Services
SQL Windows Core
Version Team Build
Warehouse
Work Items
Reporting SharePoint
Data
Control Data
Services Services
Team Foundation Data Tier
31. Configuraciones básicas de TFS
50 - 500 usuarios
2 Servidores
Equipo Grande
2 - 50 usuarios
Client
1 Servidor
1 usuario
Equipo Pequeño
1 máquina
Build
Demo/Evaluación • Client
(op.)
• Build (op.)
• Client
• Build App Tier
• App Tier
• Data Tier • App Tier
• Data Tier
Version
• Build (op.)
Control
Proxy (op.)
Soporta:
• Workgroup Data Tier
• Active Directory
(2003 or 2000)
Requiere Active Directory
(2003 or 2000)
32. TeamBuild
Extensiones sobre MSBuild
Todos los tipos de proyecto de VS añaden sus extensiones
Se instala por separado a TFS
Soporte a varias máquinas de build
Definición de pasos (BuildSteps)
Extensible
Override BuildSteps
Usar Tareas Msbuild
MSbuildCommunityTasks
Microsoft.SDC
35. Agenda
ALM/SDLC
BUILD
Pruebas y Entornos
Herramientas
Integración Continua con TFS
36. Integración Continua
Se integra el trabajo de los desarrolladores
Se verifica la calidad
Análisis
Estático
Pruebas unitarias
¿Cada cuanto tiempo lanzo el proceso¿
Cada semana, día, hora…
Proceso desatendido
¿Cuantas tareas incluyo en el proceso?
37. Mejoras en el SDLC
Minimizar la entropía
Pero… si en mi máquina funciona !!
Acelerar las pruebas de regresión
Facilitar la instalación de un puesto de desarrollo
Seguridad para afrontar los cambios
Los scripts de build y las pruebas unitarias sirven de
documentación
38. El ritual de CheckIn
Bajarse la última versión
Modificar/Añadir código
Ejecutar las pruebas en local
Bajarse la última versión
Ejecutar las pruebas en local
Hacer CheckIn
Ver los cambios en el servidor
Si se ha roto la build, arreglarla
Nunca dejar la build rota más de 24 horas
39. Bases de datos
Las bases de datos son código
Tablas,
Vistas, Procedimientos
Se deben tratar como texto
Versionar todo (schema, data)
Los DBA se deben implicar en el proceso
Una BBDD por desarrollador y por entorno
Gestión de datos de prueba
Usar VS4DB
Incluye scripts de MSBuild
40. Pruebas en la integración continua
Pruebas unitarias
Si ó Si
Pruebas de integración
Puede…
Pruebas de aceptación/rendmiento
Muy complicado hacerlo en el mismo flujo
Dependen de una instalación
41. Gestión de proyecto con IC
Obtener estadísticas de las builds
Transparencia
Si no hay checkIns algo va mal
Negociar el mantenimiento de la build vs Nueva
funcionalidad
Configurar la IC es la primera tarea del proyecto
Todo el equipos puede obtener la última versión
fácilmente (sobre todo los testers)
42. Optimizar el tiempo de build
Partir soluciones
El cuello de botella suelen ser las pruebas
Sino corren en segundos, no son unitarias
Desacoplar
MVC/MVP
Mocks y Stubs
Varios tipos de build
43. Tipos de Build
Build para integración continua (BVT)
Rápida, Sencilla
Build diaria/nocturna (Nightly)
Incluir verificación, release, etc…
Build de Pruebas
Run Test Code (Load, Acceptance)
Completa
Generar versión definitiva (Alpha, Beta, RC, RTM)
44. BVT
Obtener Asociar Asociar
UnitTest Instalable
Fuentes Cambios Funcionalidad
Definir
Montar Árbol CodeMetrics Instalar Enviar Alertas
Calidad
Referencias CodeRules Configurar Etiquetar
Compilar Integration
Base de datos Archivar
Release Test
Compilar
Versionar LoadTest Reports
Debug
45. Nightly
Obtener Asociar Asociar
UnitTest Instalable
Fuentes Cambios Funcionalidad
Definir
Montar Árbol CodeMetrics Instalar Enviar Alertas
Calidad
Referencias CodeRules Configurar Etiquetar
Compilar Integration
Base de datos Archivar
Release Test
Compilar
Versionar LoadTest Reports
Debug
46. Test
Obtener Asociar Asociar
UnitTest Instalable
Fuentes Cambios Funcionalidad
Definir
Montar Árbol CodeMetrics Instalar Enviar Alertas
Calidad
Referencias CodeRules Configurar Etiquetar
Compilar Integration
Base de datos Archivar
Release Test
Compilar
Versionar LoadTest Reports
Debug
47. Integración Continua con TFS
MSBuild, TeamBuild (incluido en TFS)
V1 no incluye IC
Extensibilidad de TFS
Soluciones de terceros basadas en BisSuscribe
No se soportan builds en paralelo
V2 si incluye IC
Configurar parámetros de build
Retention Policy
Encolar Builds