capacitación tfs - build

43
www.tecnosoftware.com.ar Build TFS para equipos de desarrollo

Upload: ariel-bender

Post on 30-Jun-2015

161 views

Category:

Technology


0 download

DESCRIPTION

Presentación sobre Build de una capacitación teórico-práctica de cuatro días sobre Microsoft TFS que di a desarrolladores, analistas funcionales, testers y PMs. Presentation about Build of a both theoretical and practical training course of four days on Microsft TFS given to developers, functional analysts, testers and PMs.

TRANSCRIPT

Page 1: Capacitación TFS - Build

www.tecnosoftware.com.ar

Build

TFS para equipos de desarrollo

Page 2: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Agenda• Conceptos

− TFS Build (Build Automation)

−MSBuild • Componentes • Configuraciones para otras tecnologías (VB)

−MSBuild en TFS• Build Definitions

• Demo de Build• Resumen

Page 3: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Repaso: Proceso de Check-In

1212V5V5

991212441212

Changeset 12

WorkItem 158

ValidarPolíticas

1

Motor de Políticas de Checkin

Motor de Políticas de Checkin

Pru

ebas

Pru

ebas

Work

Ite

ms

Work

Ite

ms

Pers

on

aliz

ada

Pers

on

aliz

ada

Anális

is E

státi

coA

nális

is E

státi

co

PublicarCambios

2

Evento de Checkin

ActualizarWork Items

3

Envío de Mail

4

Link

Workspace

Page 4: Capacitación TFS - Build

Build YAutomatización de Build

Page 5: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Team BuildEjecución de un build

Obtener fuentes del TFS

Generar Build Report y notificar

Publicar el Build Output

Actualizar Work Items

Build (incluido el Code Analysis)

Correr Tests y obtener Coverage

Page 6: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Team BuildArquitectura

Cliente Team Foundation

Capa de Aplicación Servidor de

Build

Crear build type Iniciar build Ver Reportes

Team Build Web Services

MSBuild

Recurso compartid

o

Capa de Datos Código Work items Team Build data

Team Foundatio

n warehous

e

Page 7: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

ConceptosBuild es el conjunto de pasos necesarios para obtener un producto de software. No se limita a compilar!

Build automation es el acto de automatizar este conjunto de pasos, generalmente relacionado con:• compilar codigo fuente• armado de paquetes o versiones• ejecucion de pruebas• despliegue en ambientes de testing y/o producción• generación de documentación

El objetivo es lograr que estas tareas sean repetibles de manera consistente, y lo mejor, es que podamos delegarlo a una herramienta que lo haga por nosotros

Page 8: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Integración Continua• Práctica de desarrollo de software donde los

miembros de un equipo integran su trabajo frecuentemente, al menos una vez por día.

• Cada integración es verificada por un build automatizado para detectar problemas de integración tan pronto como sea posible.

• Permite al equipo de QA realizar verificaciones tempranas del producto sin depender de despliegues manuales.

Page 9: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Nightly Build• Consiste en ejecutar el proceso completo de Build

todas las noches con el objetivo de asegurar que el sistema se encuentra en estado consistente.

• El resultado de un nightly-build debe ser un entegable concreto, capaz de ser deployado.

• Ventajas:−Comenzar a trabajar todos los días sobre suelo firme.−Si ocurren problemas de integración, saber exactamente la

causa para solucionarlo cuanto antes

Page 10: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Unit Testing

• Procedimiento usado para validar el correcto funcionamiento de un módulo de código (clase o componente)

• Codificar casos de prueba para cada una de las funcionalidades y métodos−Se prueba cada parte por separado para verificar que cada

parte funciona correctamente

−Si un cambio provoca una regresión, ésta puede ser rápidamente identificada y corregida

−Cada caso de prueba es independiente del resto (principalmente a nivel de datos)

• Realizado por desarrolladores (no por usuarios)

Page 11: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Unit Testing - Ventajas

• Facilita el Cambio−Permite refactorizar el código garantizando que

el módulo aún funciona correctamente• Simplifica la Integración

−Pueden ser utilizados en un testing de tipo bottom-up (se verifican primero las partes y luego al suma de ellas)

• Documentación−Proveen una especie de “documentación viva”. −Describen cómo se debe usar (y cómo no) el

módulo de código y su API−Evolucionan a medida que evoluciona el código

Page 12: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Unit Testing - Desventajas

• Sólo se verifica la funcionalidad de las pruebas unitarias

• No es posible capturar todos los errores−Errores de integración−Problemas de performance

• No es simple anticipar todas las posibles combinaciones de entradas a la unidad que se está probando

• No permite probar todas las capas fácilmente

Page 13: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Unit Testing en TFS

[TestClass]public class CuentasTest{ [TestMethod] public void SaldoTest(){

Cuenta cta = new Cuenta();cta.Depositar(1000);Assert.AreEqual(1000,

cta.Saldo);}

}

Atributo que agrupa Tests

Atributo que define un Test

Evaluaciones de condiciones funcionales del test

Page 14: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

using Nunit.Framework;

[TestFixture]• public class CuentasTest{

[Test]• public void SaldoTest(){• Cuenta cta = new Cuenta();• cta.Depositar(1000);• Assert.AreEqual(1000,

cta.Saldo);• }

}

Unit Test con NUnit

Namespace de Nunit

Atributo que agrupa Tests

Atributo que define un Test

Evaluaciones de condiciones funcionales del test

Page 15: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Code Coverage

• Es una actividad propia del testing Caja Blanca

• Utilizada en conjunto con Unit Testing• Su resultado representa el porcentaje de

alcance sobre el software objetivo de las pruebas unitarias−El cálculo se basa en el conjunto de líneas de

código fuente que fueron alcanzadas por la ejecución de las pruebas unitarias

Page 16: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Tipos de Code Coverage

• Function coverage – Fueron ejecutadas todas las funciones del programa?

• Statement coverage – Fue ejecutada cada línea del archivo fuente?

• Condition coverage – Fueron ejecutadas todas las condiciones de evaluación y sus caminos alternativos?

Page 17: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Build Automation

• Utiliza como motor de compilación a MSBuild.

• Trabaja sobre Team Projects.• Se configura mediante Build Definitions

utilizando los Build Agents.

Page 18: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

MSBuild• Plataforma de compilación• Configuraciones mediante archivo XML

−*.sln y *.*proj• Contenido

−Elementos−Propiedades−Tareas−Destinos

• Extendido por la community agregando nuevas tareas que facilitan el tratamiento de otras plataformas.−http://msbuildextensionpack.codeplex.com/

Page 19: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Elementos (Items)• Representan entradas en el sistema de

generación.• Se agrupan en colecciones de elementos basadas

en los nombres de colección definidos por el usuario.

• Se hace referencia a las colecciones de elementos mediante la sintaxis @(NombreColeccion).

• Ej: @(Archivos)<ItemGroup>

<Archivos Include="pics/sunny.png;pics/rain.png" />

<Archivos Include="pics/**/*.png" />

</ItemGroup>

Page 20: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Propiedades• Representan pares clave/valor que se pueden

utilizar para configurar.• Se declaran creando un elemento con el nombre

de la propiedad como elemento secundario de un elemento PropertyGroup.

• Se hace referencia a las propiedades con la sintaxis $(PropertyName).

• Ej: $(Foo)

<PropertyGroup>

<Foo>Bar</Foo>

</PropertyGroup>

Page 21: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Elementos vs Propiedades

• Los elementos se almacenan en colecciones, mientras que las propiedades contienen un valor escalar único.

• Los elementos no se pueden quitar de las colecciones de elementos, mientras que se puede modificar el valor de las propiedades una vez definido.

• Los elementos pueden contener metadatos y utilizar la notación %(ItemMetadata), mientras que las propiedades no pueden.

Page 22: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Tareas

• Las tareas son unidades reutilizables de código ejecutable.

• MSBuild se distribuye con un gran número de tareas comunes, como Copy, MakeDir y Error.

• Listado de tareas:− http://msdn.microsoft.com/es-es/library/7z253716(v=vs.90).aspx

• Ejemplo:<MakeDir Directories="$(BuildDir)" />

Page 23: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Destinos (Targets)

• Unidad mínima de ejecución• Agrupan tareas en un orden particular• Exponen secciones del archivo de proyecto como

puntos de entrada en el proceso de generación

<Target Name=“CrearCarpetas">

<MakeDir Directories="$(BuildDir)" />

</Target>

Page 24: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Dependencia de Targets

• Los destinos pueden describir relaciones entre ellos y llevar a cabo análisis de dependencia.<Target Name=“Tarea1“>

...

</Target>

<Target Name=“Tarea2“>

...

</Target>

<Target Name="Copiar“ DependsOnTargets=“Tarea1;Tarea2" >

...

</Target>

Page 25: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Condiciones

• MSBuild admite condiciones−'stringA' == 'stringB‘−'stringA' != 'stringB‘−<, >, <=, >=−Exists('stringA')−! , And, Or

• Agrupaciones con ( )• Ejemplo

<Error Text="Error al compilar" Condition="'$(ErrorCode)‘ > '0'" />

Page 26: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Elemento Choose

• El elemento Choose contiene una serie de elementos When con atributos Condition que se comprueban de forma ordenada de arriba abajo hasta que uno aparece evaluado como true.

• Si más de un elemento When resulta evaluado como true, sólo se utilizará el primero.

• Se evaluará un elemento Otherwise, en caso de encontrarse presente, si ninguna condición en un elemento When resulta evaluada como true.

Page 27: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Elemento Choose

• Ejemplo

<Choose>

<When Condition=" '$(Configuration)'=='Debug' ">

...

</When>

<When Condition=" '$(Configuration)'=='retail' ">

...

</When>

</Choose>

Page 28: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Tarea Exec

• Ejecuta el programa o comando especificado con los argumentos especificados.−http://msdn.microsoft.com/es-es/library/x8zx72cd(v=vs.90

).aspx<Target Name="EjecutarBat">

<Exec Command='"ejecutar.bat"' ContinueOnError='true'>

<Output TaskParameter="ExitCode“ PropertyName="ErrorCode"/>

</Exec>

<Message Text="The exit code is $(ErrorCode)"/>

</Target>

Page 29: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Registrar librerías

• Mediante la tarea Exec se ejecuta el comando:−regsvr32

• Parámetros−/s Sin notificación−/u Quitar del registro

• Ejemplo<Target Name="RegisterProjects">

<Message Text=“Registrando dlls..."/>

<Exec Command="regsvr32 /s nombredll.dll"/>

</Target>

Page 30: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Extension pack

• Incluye tareas adicionales.• Se deben incluir las extension pack.

−http://msbuildextensionpack.codeplex.com/• Ejemplos

−Compilar VB6

−Comprimir

<MSBuild.ExtensionPack.VisualStudio.VB6 TaskAction="Build" Projects="@(Item_Group)"/>

<MSBuild.ExtensionPack.Compression.Zip TaskAction="Create" CompressFiles="@(FilesToZip)" ZipFileName="C:\newZipByFile.zip"/>

Page 31: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Ejecución de MSBuild

• Ejecución por línea de comando:

• Las opciones de la línea de comandos permiten establecer propiedades, ejecutar destinos específicos y especificar registradores.

• Por ejemplo, se ejecuta el archivo MyProj.proj con la propiedad Configuration establecida en Debug.

MSBuild.exe MyProj.proj /property:Configuration=Debug

Page 32: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Ejemplo<Project ToolsVersion="3.5" DefaultTargets="CompilarProyectos" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Target Name="compilarProyecto1"> <Exec Command='"proyecto1.bat"' ContinueOnError='true'> <Output TaskParameter="ExitCode" PropertyName="ErrorCode"/> </Exec> <Message Text="Compilacion Proyecto 1 / Exit code: $(ErrorCode)"/> <Error Text="Error while executing BAT file" Condition="'$(ErrorCode)' > '0'" /> <OnError ExecuteTargets="MessageErrorHandler"/> </Target> <Target Name="compilarProyecto2"> <Exec Command='"proyecto2.bat"' ContinueOnError='true'> <Output TaskParameter="ExitCode" PropertyName="ErrorCode"/> </Exec> <Message Text="Compilacion Proyecto 2 / Exit code: $(ErrorCode)"/> <Error Text="Error while executing BAT file" Condition="'$(ErrorCode)' > '0'" /> <OnError ExecuteTargets="MessageErrorHandler"/> </Target> <Target Name="CompilarProyectos" DependsOnTargets="compilarProyecto1;compilarProyecto2"> </Target> <!--Error Handler--> <Target Name="MessageErrorHandler"> <Message Text="Ha ocurrido un error al ejecutar la compilacion. Por favor revise el log."/> </Target>

</Project>

Page 33: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Build Definitions• Contiene las instrucciones que indican:

−Cual es el código del proyecto a compilar−Como debe ejecutarse−Operaciones adicionales

Page 34: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Crear Build Definitions

Page 35: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Listado de Builds

Page 36: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Reportes

Page 37: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Target de TFS

• TFS posee targets pre-definidos para realizar las tareas de TFS Build

• Se deben importar en el proyecto:

<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\TeamBuild\Microsoft.TeamFoundation.Build.targets" />

Page 38: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Sobre-escribir targets de TFS

• Para integrar la compilación VB6 se requiere sobre-escribir las targets nativos de TFS:−CoreCompile

−AfterDropBuild

<Target Name="CoreCompile" DependsOnTargets="CompileVB6Projects"></Target>

<Target Name="AfterDropBuild" DependsOnTargets="ZipBin;Copiar;Limpiar"></Target>

Page 39: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Propiedades en TFS

• Pares de clave y valor que puede utilizar para configurar las compilaciones de TFS.−http

://msdn.microsoft.com/en-us/library/aa337598(v=vs.90).aspx

• Estas propiedades se pueden modificar en el archivo TFSBuild.proj para:−Pasar valores a tareas y destinos de TFS Build−Invalidar algunas acciones de compilación

• Ejemplos−RunTest−SkipWorkItemCreation

Page 40: Capacitación TFS - Build

Demo de Build Server con TFS

Page 41: Capacitación TFS - Build

Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar

Resumen• Build como proceso repetitivo• Distintos escenarios de Build

−Integrado al check-in, Unit testing, nightly build, code coverage

−Build por branch, build específicos• TFS Build y MS Build

Page 42: Capacitación TFS - Build

Consultas

Page 43: Capacitación TFS - Build

Av. Belgrano 687 Piso 7º - Buenos Aires, Argentina

Teléfono: (+5411) 5128-3000

www.tecnosoftware.com.ar

[email protected]