capacitación tfs - build

Post on 30-Jun-2015

161 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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

www.tecnosoftware.com.ar

Build

TFS para equipos de desarrollo

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

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

Build YAutomatización de 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

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

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

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.

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

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)

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

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

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

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

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

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?

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.

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/

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>

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>

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.

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)" />

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>

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>

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'" />

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.

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>

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>

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>

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"/>

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

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>

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

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

Crear Build Definitions

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

Listado de Builds

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

Reportes

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" />

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>

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

Demo de Build Server con TFS

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

Consultas

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

Teléfono: (+5411) 5128-3000

www.tecnosoftware.com.ar

contacte@tecnosoftware.com.ar

top related