INTEGRACIÓN CONTINUA CON
TEAM FOUNDATION SERVER
Conceptos Avanzados de compilaciónMadrid 20070628
http://blogs.msdn.com/rido
Introducción
Trabajo en equipo
Integrar componentes
¿Quien integra?
¿Cuando se integra?
¿Cuánto tardo?
¿Cómo se verifica?
Generar una versión
Compilación
Probar una versión
Visibilidad del progreso
Infrastructure
Architect
Solution
Architect
Project Manager
Developer
Tester
End User
Agenda
ALM/SDLC
BUILD
Pruebas y Entornos
Herramientas
Integración Continua con TFS
ALM=Application Lifecycle Management
ALM Platform Operations
Infrastructure/Operations
ALM Platform Monitoring
Platform Capacity Mgmt
Platform Design/TopologyMigration/Integration
Workflow Engine
ALM System Integration
Install/Setup
Security ImplementationOperations Role Guidance
Process/GovernanceProject Governance Ent Arch StandardsDev Methodology (SDLC)
Project Determination
Release Management
Compliance (SOX) Dev Standards/Policies
Architectural Governance
Secure Dev Lifecycle
Project Mgmt
KPI and Scorecards
Communication Mgmt
Task Management
Risk Mgmt
Portfolio Mgmt
PMO
Requirements Mgmt
Business Analyst
Business Archi (Motion)
Requirements Mgmt
Requirements Elicitation
SCM/Build Mgmt
Build Manager
Gated Build Process
Test Deployment
Continuous Integration
Build Management
Test Mgmt
Testing KPI’s
Incremental Testing
System Testing
Unit Testing
Test Cases
Test Strategy
Code Review Process
Coding Best Practices
Software Factories
Enterprise P&P
Develop Mgmt
Documentation Best Prac
Refactoring
Developer
User Acceptance TestingSCM Manager
SCM Management
Project Manager
DBA
Performance Testing
Test Manager
Secure Dev Best Prac
DB Development
ALM=Application Lifecycle Management
ALM Platform Operations
Infrastructure/Operations
ALM Platform Monitoring
Platform Capacity Mgmt
Platform Design/TopologyMigration/Integration
Workflow Engine
ALM System Integration
Install/Setup
Security ImplementationOperations Role Guidance
Process/GovernanceProject Governance Ent Arch StandardsDev Methodology (SDLC)
Project Determination
Release Management
Compliance (SOX) Dev Standards/Policies
Architectural Governance
Secure Dev Lifecycle
Project Mgmt
KPI and Scorecards
Communication Mgmt
Task Management
Risk Mgmt
Portfolio Mgmt
PMO
Requirements Mgmt
Business Analyst
Business Archi (Motion)
Requirements Mgmt
Requirements Elicitation
SCM/Build Mgmt
Build Manager
Gated Build Process
Test Deployment
Continuous Integration
Build Management
Test Mgmt
Testing KPI’s
Incremental Testing
System Testing
Unit Testing
Test Cases
Test Strategy
Code Review Process
Coding Best Practices
Software Factories
Enterprise P&P
Develop Mgmt
Documentation Best Prac
Refactoring
Developer
User Acceptance TestingSCM Manager
SCM Management
Project Manager
DBA
Performance Testing
Test Manager
Secure Dev Best Prac
DB Development
SDLC=SoftwareDevelopmentLifeCycle
¿Cómo se construye el software?
Proceso continuo
Análisis, Diseño, Desarrollo, Pruebas
Código Fuente
Es el entregable más importante
Gestionar el cambio
Repositorio
Concepto de versión
Crear una versión
Demo
Aplicación de Ejemplo
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
Demo:FabrikamMembershipProvider
CredentialsValidator
Fabrikam.Web
Agenda
ALM/SDLC
BUILD
Pruebas y Entornos
Herramientas
Integración Continua con TFS
Pasos para crear una versión
Obtener Fuentes
Compilar Analizar Probar Archivar
Obtener 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
Obtener Fuentes
Compilar Analizar Probar Archivar
Compilar
Build
Clean
Incremental
Build Config
Debug/Release
CPUs 32, 64
Referencias
Build Numbers
Major.Minor.Build.Revision
IDE
Automation
Obtener Fuentes
Compilar Analizar Probar Archivar
CompileCode Binary
PreprocGrammar
Link
Raise
Errors
Análisis Estático
Buscar errores conocidos
Reglas de verificación
Información de los errores
Obtener Fuentes
Compilar Analizar Probar Archivar
Code
CompileStatic
Analysis
Analyze
Code
Check
Rules
Raise
Errors
Binary
Probar
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
Obtener Fuentes
Compilar Analizar Probar Archivar
Archivar
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
Obtener Fuentes
Compilar Analizar Probar Archivar
Anatomía de una build
Obtener Fuentes
Montar Árbol
Referencias
Base de datos
VersionarCompilar Debug
Compilar Release
CodeRules
CodeMetrics
UnitTest Instalable
Instalar
Configurar
IntegrationTest
LoadTest Reports
Archivar
Etiquetar
Definir Calidad
Asociar Cambios
Asociar Funcionalidad
Enviar Alertas
Demo
Compilar con MSBuild
Agenda
ALM/SDLC
BUILD
Pruebas y Entornos
Herramientas
Integración Continua con TFS
La versión en los entornos
Pruebas en el ciclo de vida
Ca
da
Hora
Ca
da
Día
Ca
da
Itera
ción
Cad
a
Vers
ión
Demo
Descripción Entornos
Agenda
ALM/SDLC
BUILD
Pruebas y Entornos
Herramientas
Integración Continua con TFS
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
Probador
Desarrollador
Arquitecto
Jefe deProyectos
Analista deNegocio
Profesional de Base de Datos
Diseñador
Mejorar la
Calidad del
Software
Facilitar la
Colaboración en
Equipo
Incrementar la
Transparecia en
Proyectos
Visual Studio Team SystemSolución ALM (Application Lifecycle Management)
Visual Studio Team System
Visual Studio Team Suite
Gu
íay P
roce
soM
icro
soft
So
luti
on
Fra
mew
ork
(M
SF)
Visual Studio Team Foundation Server
VisualStudio
IndustryPartners
SoftwareArchitects
SoftwareDevelopers
SoftwareTesters
DatabaseProfessionalsVisual
StudioTeam
Explorer Modelado de Aplicación
Modelado de Infraestructura
Análisis de Código
Ajuste de Rendimiento
Pruebas de BD
Pruebas Manuales
Gestión de Casos de Prueba
Visual Studio Professional Edition
Control de Código
Gestión del Cambio
(Workitem Tracking)
Informes
Portal de Proyecto
Gestión de Proyecto
Servicio de Integración
(Team Build)
Load Test Agent
Visio y Modelado UML
Modelado Clases
Pruebas Unitarias
Cobertura de Código
Code Control Proxy
Modelado de Despliegue
Pruebas de Carga
Despliegue de BD
Gestión de Cambiosde BD
Custom reporting
tools
MS Excel
Team Foundation Data Tier
Version Control
Proxy Server
Report Client
Team Foundation Client Tier
CoreData
VersionControl
Work ItemsTeam Build
Data
SQLReportingServices
WindowsSharePoint
Services
SQL
Reporting
Services
Windows
SharePoint
Services
Work ItemTrackingService
VersionControlService
TeamBuild
Service
CoreServices
Warehouse
Adapters
Team Foundation App Tier
WSS
Proxies
SQL RS
ProxiesTeam Foundation Object Model
MS Excel
Plug-In
MS Project
Plug-InVisual Studio Packages
Internet Explorer
BuildProcess
VersionControlProxy
Service
VSTF
Clients of VSTF
VSTF Adjuncts
Build Machine
Arquitectura Técnica de TFS
Configuraciones básicas de TFS
1 máquina
Demo/Evaluación
• Client
• Build
• App Tier
• Data Tier
1 usuario
2 Servidores
Equipo Grande
Client
Data Tier
App Tier
Requiere Active Directory
(2003 or 2000)
Build
(op.)
Version
Control
Proxy (op.)
50 - 500 usuarios
1 Servidor
Equipo Pequeño
Soporta:
• Workgroup
• Active Directory
(2003 or 2000)
• Client
• Build (op.)
• App Tier
• Data Tier
• Build (op.)
2 - 50 usuarios
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
TeamBuild::BuildSteps
BeforeEndToEndIteration BeforeCompile
BuildNumberOverrideTarget CoreCompile
InitializeEndToEndIteration AfterCompile
BeforeClean Compile
CoreClean GetChangeSetsAndUpdateWorkItems
AfterClean PostBuild
Clean BeforeTest
InitializeBuild CoreTest
BeforeGet Test
BeforeLabel AfterTest
Label PackageBinaries
AfterLabel TeamBuild
InitializeWorkspace BeforeDropBuild
CoreGet CoreDropBuild
AfterGet CopyLogFiles
PreBuild AfterDropBuild
Demo
Crear una BuildType con TFS
Agenda
ALM/SDLC
BUILD
Pruebas y Entornos
Herramientas
Integración Continua con TFS
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?
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
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
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
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
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)
Optimizar el tiempo de build
Partir soluciones
El cuello de botella suelen ser las pruebas
Si no corren en segundos, no son unitarias
Desacoplar
MVC/MVP
Mocks y Stubs
Varios tipos de build
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)
BVT
Obtener Fuentes
Montar Árbol
Referencias
Base de datos
VersionarCompilar Debug
Compilar Release
CodeRules
CodeMetrics
UnitTest Instalable
Instalar
Configurar
IntegrationTest
LoadTest Reports
Archivar
Etiquetar
Definir Calidad
Asociar Cambios
Asociar Funcionalidad
Enviar Alertas
Nightly
Obtener Fuentes
Montar Árbol
Referencias
Base de datos
VersionarCompilar Debug
Compilar Release
CodeRules
CodeMetrics
UnitTest Instalable
Instalar
Configurar
IntegrationTest
LoadTest Reports
Archivar
Etiquetar
Definir Calidad
Asociar Cambios
Asociar Funcionalidad
Enviar Alertas
Test
Obtener Fuentes
Montar Árbol
Referencias
Base de datos
VersionarCompilar Debug
Compilar Release
CodeRules
CodeMetrics
UnitTest Instalable
Instalar
Configurar
IntegrationTest
LoadTest Reports
Archivar
Etiquetar
Definir Calidad
Asociar Cambios
Asociar Funcionalidad
Enviar Alertas
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
RangersCI
Compatible con Orcas
Demo
Integración continua con TFS v1 (Rangers CI)
Integración continua con TFS v2 Orcas
Agenda
ALM/SDLC
BUILD
Pruebas y Entornos
Herramientas
Integración Continua con TFS
Preguntas?
Sugerencias para mejorar este contenido
http://blogs.msdn.com/rido