integración continua con team foundation server

51
INTEGRACIÓN CONTINUA CON TEAM FOUNDATION SERVER Conceptos Avanzados de compilación Madrid 20070628 http://blogs.msdn.com/rido

Upload: rido

Post on 05-Dec-2014

14.942 views

Category:

Documents


3 download

DESCRIPTION

Como implementar la integración continua con TFS v1, y Orcas

TRANSCRIPT

Page 1: Integración Continua con Team Foundation Server

INTEGRACIÓN CONTINUA CON

TEAM FOUNDATION SERVER

Conceptos Avanzados de compilaciónMadrid 20070628

http://blogs.msdn.com/rido

Page 2: Integración Continua con Team Foundation Server

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

Page 3: Integración Continua con Team Foundation Server

Agenda

ALM/SDLC

BUILD

Pruebas y Entornos

Herramientas

Integración Continua con TFS

Page 4: Integración Continua con Team Foundation Server

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

Page 5: Integración Continua con Team Foundation Server

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

Page 6: Integración Continua con Team Foundation Server

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

Page 7: Integración Continua con Team Foundation Server

Crear una versión

Page 8: Integración Continua con Team Foundation Server

Demo

Aplicación de Ejemplo

Page 9: Integración Continua con Team Foundation Server

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

Page 10: Integración Continua con Team Foundation Server

Demo:FabrikamMembershipProvider

Page 11: Integración Continua con Team Foundation Server

CredentialsValidator

Page 12: Integración Continua con Team Foundation Server

Fabrikam.Web

Page 13: Integración Continua con Team Foundation Server

Agenda

ALM/SDLC

BUILD

Pruebas y Entornos

Herramientas

Integración Continua con TFS

Page 14: Integración Continua con Team Foundation Server

Pasos para crear una versión

Obtener Fuentes

Compilar Analizar Probar Archivar

Page 15: Integración Continua con Team Foundation Server

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

Page 16: Integración Continua con Team Foundation Server

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

Page 17: Integración Continua con Team Foundation Server

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

Page 18: Integración Continua con Team Foundation Server

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

Page 19: Integración Continua con Team Foundation Server

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

Page 20: Integración Continua con Team Foundation Server

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

Page 21: Integración Continua con Team Foundation Server

Demo

Compilar con MSBuild

Page 22: Integración Continua con Team Foundation Server

Agenda

ALM/SDLC

BUILD

Pruebas y Entornos

Herramientas

Integración Continua con TFS

Page 23: Integración Continua con Team Foundation Server

La versión en los entornos

Page 24: Integración Continua con Team Foundation Server

Pruebas en el ciclo de vida

Ca

da

Hora

Ca

da

Día

Ca

da

Itera

ción

Cad

a

Vers

ión

Page 25: Integración Continua con Team Foundation Server

Demo

Descripción Entornos

Page 26: Integración Continua con Team Foundation Server

Agenda

ALM/SDLC

BUILD

Pruebas y Entornos

Herramientas

Integración Continua con TFS

Page 27: Integración Continua con Team Foundation Server

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

Page 28: Integración Continua con Team Foundation Server

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)

Page 29: Integración Continua con Team Foundation Server

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

Page 30: Integración Continua con Team Foundation Server

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

Page 31: Integración Continua con Team Foundation Server

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

Page 32: Integración Continua con Team Foundation Server

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

Page 33: Integración Continua con Team Foundation Server

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

Page 34: Integración Continua con Team Foundation Server

Demo

Crear una BuildType con TFS

Page 35: Integración Continua con Team Foundation Server

Agenda

ALM/SDLC

BUILD

Pruebas y Entornos

Herramientas

Integración Continua con TFS

Page 36: Integración Continua con Team Foundation Server

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?

Page 37: Integración Continua con Team Foundation Server

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

Page 38: Integración Continua con Team Foundation Server

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

Page 39: Integración Continua con Team Foundation Server

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

Page 40: Integración Continua con Team Foundation Server

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

Page 41: Integración Continua con Team Foundation Server

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)

Page 42: Integración Continua con Team Foundation Server

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

Page 43: Integración Continua con Team Foundation Server

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)

Page 44: Integración Continua con Team Foundation Server

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

Page 45: Integración Continua con Team Foundation Server

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

Page 46: Integración Continua con Team Foundation Server

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

Page 47: Integración Continua con Team Foundation Server

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

Page 48: Integración Continua con Team Foundation Server

RangersCI

Compatible con Orcas

Page 49: Integración Continua con Team Foundation Server

Demo

Integración continua con TFS v1 (Rangers CI)

Integración continua con TFS v2 Orcas

Page 50: Integración Continua con Team Foundation Server

Agenda

ALM/SDLC

BUILD

Pruebas y Entornos

Herramientas

Integración Continua con TFS

Page 51: Integración Continua con Team Foundation Server

Preguntas?

Sugerencias para mejorar este contenido

http://blogs.msdn.com/rido