SlideShare une entreprise Scribd logo
1  sur  43
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
12V59
12
4
12
Changeset 12
WorkItem 158
Validar
Políticas
1
Motor de Políticas
de Checkin
Pruebas
WorkItems
Personalizada
AnálisisEstático
Publicar
Cambios
2
Evento de
Checkin
Actualizar
Work Items
3
Envío de Mail
4
Link
Workspace
Build Y
Automatización de Build
Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar
Team Build
Ejecució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 Build
Arquitectura
Cliente Team Foundation
Capa de Aplicación
Servidor de
Build
Crear build type
Iniciar build
Ver Reportes
Team Build Web Services
MSBuild
Recurso
compartido
Capa de Datos
Código
Work items
Team Build data
Team
Foundation
warehouse
Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar
Conceptos
Build 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)MicrosoftVisualStudioT
eamBuildMicrosoft.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

Contenu connexe

En vedette

imetodo_formacion.pdf
imetodo_formacion.pdfimetodo_formacion.pdf
imetodo_formacion.pdfimétodo
 
Tarea en clase diapositivas
Tarea en clase  diapositivasTarea en clase  diapositivas
Tarea en clase diapositivasDiana Imbaquingo
 
C O N T A C T O
C O N T A C T OC O N T A C T O
C O N T A C T Oquisqueya1
 
Memories of WMS G.A.T.E. 8th grade 2010
Memories of WMS G.A.T.E. 8th grade 2010Memories of WMS G.A.T.E. 8th grade 2010
Memories of WMS G.A.T.E. 8th grade 2010Andrea L. Wurm
 
Vietnam Boletín Informativo Octubre 2010
Vietnam Boletín Informativo Octubre 2010Vietnam Boletín Informativo Octubre 2010
Vietnam Boletín Informativo Octubre 2010Juan Inoriza
 
Consideraciones consideraciones didacticas para enseñar y jugar
Consideraciones consideraciones didacticas para enseñar y jugarConsideraciones consideraciones didacticas para enseñar y jugar
Consideraciones consideraciones didacticas para enseñar y jugartogueda
 
Beyond MVC: from Model to Domain
Beyond MVC: from Model to DomainBeyond MVC: from Model to Domain
Beyond MVC: from Model to DomainJeremy Cook
 
Proven Strategies to Leverage Your Customer Community to Grow Your Business
Proven Strategies to Leverage Your Customer Community to Grow Your BusinessProven Strategies to Leverage Your Customer Community to Grow Your Business
Proven Strategies to Leverage Your Customer Community to Grow Your BusinessSocious
 
Catálogo mitsubishi electric aire acondicionado msz fd - msz-ge mfz-ka
Catálogo mitsubishi electric aire acondicionado msz fd - msz-ge mfz-kaCatálogo mitsubishi electric aire acondicionado msz fd - msz-ge mfz-ka
Catálogo mitsubishi electric aire acondicionado msz fd - msz-ge mfz-kaRooibos13
 
Career Guide International Careers
Career Guide International CareersCareer Guide International Careers
Career Guide International Careershanzoh
 
Fb footwear presentation
Fb footwear presentation Fb footwear presentation
Fb footwear presentation paul_ruet
 

En vedette (19)

imetodo_formacion.pdf
imetodo_formacion.pdfimetodo_formacion.pdf
imetodo_formacion.pdf
 
Tarea en clase diapositivas
Tarea en clase  diapositivasTarea en clase  diapositivas
Tarea en clase diapositivas
 
C O N T A C T O
C O N T A C T OC O N T A C T O
C O N T A C T O
 
Foda
FodaFoda
Foda
 
Memories of WMS G.A.T.E. 8th grade 2010
Memories of WMS G.A.T.E. 8th grade 2010Memories of WMS G.A.T.E. 8th grade 2010
Memories of WMS G.A.T.E. 8th grade 2010
 
Abdellah Mahdar CV
Abdellah Mahdar CVAbdellah Mahdar CV
Abdellah Mahdar CV
 
Vietnam Boletín Informativo Octubre 2010
Vietnam Boletín Informativo Octubre 2010Vietnam Boletín Informativo Octubre 2010
Vietnam Boletín Informativo Octubre 2010
 
High-Profile May 2012
High-Profile May 2012High-Profile May 2012
High-Profile May 2012
 
Consideraciones consideraciones didacticas para enseñar y jugar
Consideraciones consideraciones didacticas para enseñar y jugarConsideraciones consideraciones didacticas para enseñar y jugar
Consideraciones consideraciones didacticas para enseñar y jugar
 
Barcamp Matej Tomasovsky
Barcamp Matej TomasovskyBarcamp Matej Tomasovsky
Barcamp Matej Tomasovsky
 
Issuu tarifas
Issuu tarifasIssuu tarifas
Issuu tarifas
 
Beyond MVC: from Model to Domain
Beyond MVC: from Model to DomainBeyond MVC: from Model to Domain
Beyond MVC: from Model to Domain
 
Proyecto de Inversión en España - ES
Proyecto de Inversión en España - ESProyecto de Inversión en España - ES
Proyecto de Inversión en España - ES
 
Proven Strategies to Leverage Your Customer Community to Grow Your Business
Proven Strategies to Leverage Your Customer Community to Grow Your BusinessProven Strategies to Leverage Your Customer Community to Grow Your Business
Proven Strategies to Leverage Your Customer Community to Grow Your Business
 
Catálogo mitsubishi electric aire acondicionado msz fd - msz-ge mfz-ka
Catálogo mitsubishi electric aire acondicionado msz fd - msz-ge mfz-kaCatálogo mitsubishi electric aire acondicionado msz fd - msz-ge mfz-ka
Catálogo mitsubishi electric aire acondicionado msz fd - msz-ge mfz-ka
 
Career Guide International Careers
Career Guide International CareersCareer Guide International Careers
Career Guide International Careers
 
Spring boot et. al. para el impaciente
Spring boot et. al. para el impacienteSpring boot et. al. para el impaciente
Spring boot et. al. para el impaciente
 
Gasometria
GasometriaGasometria
Gasometria
 
Fb footwear presentation
Fb footwear presentation Fb footwear presentation
Fb footwear presentation
 

Similaire à TFS Build Automation

Capacitacion TFS - introducción
Capacitacion TFS - introducciónCapacitacion TFS - introducción
Capacitacion TFS - introducciónAriel Bender
 
Genesis Suite Server
Genesis Suite ServerGenesis Suite Server
Genesis Suite ServerLuis Lesende
 
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe... Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...Federico Toledo
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Abstracta
 
Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8Jose Luis Soria
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Luis Fernando Aguas Bucheli
 
Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework
Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo frameworkDesarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework
Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo frameworkSantiago Bustelo
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxLuis Fernando Aguas Bucheli
 
Integracion y Entrega Continua - TLP Innova 2017
Integracion y Entrega Continua - TLP Innova 2017Integracion y Entrega Continua - TLP Innova 2017
Integracion y Entrega Continua - TLP Innova 2017Romén Rodríguez-Gil
 
Automatizacion de-un-torno-paralelo-con-control-basado-en-pc
Automatizacion de-un-torno-paralelo-con-control-basado-en-pcAutomatizacion de-un-torno-paralelo-con-control-basado-en-pc
Automatizacion de-un-torno-paralelo-con-control-basado-en-pcRobertoH1234
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareMiguel Sanchez
 

Similaire à TFS Build Automation (20)

Capacitacion TFS - introducción
Capacitacion TFS - introducciónCapacitacion TFS - introducción
Capacitacion TFS - introducción
 
S2-PD2.pptx
S2-PD2.pptxS2-PD2.pptx
S2-PD2.pptx
 
S2-PD2.pptx
S2-PD2.pptxS2-PD2.pptx
S2-PD2.pptx
 
Genesis Suite Server
Genesis Suite ServerGenesis Suite Server
Genesis Suite Server
 
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe... Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
Charla en Universidad ORT 2014 - Testing técnico (automatización, mobile, pe...
 
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
Testing técnico - Automatización en web y mobile para pruebas funcionales y p...
 
Diseño caso de pruebas
Diseño caso de pruebasDiseño caso de pruebas
Diseño caso de pruebas
 
Diseño caso de pruebas
Diseño caso de pruebasDiseño caso de pruebas
Diseño caso de pruebas
 
Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8Visual Studio Tour Plain Concepts - ALM para Windows 8
Visual Studio Tour Plain Concepts - ALM para Windows 8
 
Web Day Devops - Plain Concepts
Web Day Devops - Plain ConceptsWeb Day Devops - Plain Concepts
Web Day Devops - Plain Concepts
 
S2-PD2-1.2 Web Forms
S2-PD2-1.2 Web FormsS2-PD2-1.2 Web Forms
S2-PD2-1.2 Web Forms
 
Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700Efc programación .net-luis fernando aguas - 22012022 1700
Efc programación .net-luis fernando aguas - 22012022 1700
 
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
 
Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework
Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo frameworkDesarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework
Desarrollo y testeo modular de interfaces HTML5 / MVC - Congo framework
 
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptxEFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
EFC-Programación .net-Luis Fernando Aguas - 15012022 1500.pptx
 
Integracion y Entrega Continua - TLP Innova 2017
Integracion y Entrega Continua - TLP Innova 2017Integracion y Entrega Continua - TLP Innova 2017
Integracion y Entrega Continua - TLP Innova 2017
 
Automatizacion de-un-torno-paralelo-con-control-basado-en-pc
Automatizacion de-un-torno-paralelo-con-control-basado-en-pcAutomatizacion de-un-torno-paralelo-con-control-basado-en-pc
Automatizacion de-un-torno-paralelo-con-control-basado-en-pc
 
Herramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de softwareHerramientas y entornos de implementacion de software
Herramientas y entornos de implementacion de software
 
Herramientas Digitales
Herramientas DigitalesHerramientas Digitales
Herramientas Digitales
 
Angular Fundamentals
Angular FundamentalsAngular Fundamentals
Angular Fundamentals
 

Dernier

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxLolaBunny11
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdfIsabellaMontaomurill
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...silviayucra2
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíassuserf18419
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesFundación YOD YOD
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx241521559
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfsoporteupcology
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)GDGSucre
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIAWilbisVega
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveFagnerLisboa3
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudianteAndreaHuertas24
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan JosephBRAYANJOSEPHPEREZGOM
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricKeyla Dolores Méndez
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxRogerPrieto3
 

Dernier (15)

Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
trabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdftrabajotecologiaisabella-240424003133-8f126965.pdf
trabajotecologiaisabella-240424003133-8f126965.pdf
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
KELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento ProtégelesKELA Presentacion Costa Rica 2024 - evento Protégeles
KELA Presentacion Costa Rica 2024 - evento Protégeles
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
Redes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdfRedes direccionamiento y subredes ipv4 2024 .pdf
Redes direccionamiento y subredes ipv4 2024 .pdf
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE  DE TECNOLOGIA E INFORMATICA PRIMARIACLASE  DE TECNOLOGIA E INFORMATICA PRIMARIA
CLASE DE TECNOLOGIA E INFORMATICA PRIMARIA
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante9egb-lengua y Literatura.pdf_texto del estudiante
9egb-lengua y Literatura.pdf_texto del estudiante
 
guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Herramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptxHerramientas de corte de alta velocidad.pptx
Herramientas de corte de alta velocidad.pptx
 

TFS Build Automation

  • 2. 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
  • 3. Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar Repaso: Proceso de Check-In 12V59 12 4 12 Changeset 12 WorkItem 158 Validar Políticas 1 Motor de Políticas de Checkin Pruebas WorkItems Personalizada AnálisisEstático Publicar Cambios 2 Evento de Checkin Actualizar Work Items 3 Envío de Mail 4 Link Workspace
  • 5. Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar Team Build Ejecució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
  • 6. Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar Team Build Arquitectura Cliente Team Foundation Capa de Aplicación Servidor de Build Crear build type Iniciar build Ver Reportes Team Build Web Services MSBuild Recurso compartido Capa de Datos Código Work items Team Build data Team Foundation warehouse
  • 7. Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar Conceptos Build 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
  • 8. 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.
  • 9. 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
  • 10. 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)
  • 11. 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
  • 12. 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
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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?
  • 17. 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.
  • 18. 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/
  • 19. 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>
  • 20. 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>
  • 21. 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.
  • 22. 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)" />
  • 23. 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>
  • 24. 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>
  • 25. 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'" />
  • 26. 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.
  • 27. 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>
  • 28. 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>
  • 29. 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>
  • 30. 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"/>
  • 31. 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
  • 32. 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>
  • 33. 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
  • 34. Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar Crear Build Definitions
  • 35. Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar Listado de Builds
  • 36. Av. Belgrano 687 7P C1092AAG Buenos Aires, Argentina | Tel. (+54 11) 5128-3000 | www.tecnosoftware.com.ar Reportes
  • 37. 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)MicrosoftVisualStudioT eamBuildMicrosoft.TeamFoundation.Build.targets" />
  • 38. 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>
  • 39. 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
  • 40. Demo de Build Server con TFS
  • 41. 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
  • 43. Av. Belgrano 687 Piso 7º - Buenos Aires, Argentina Teléfono: (+5411) 5128-3000 www.tecnosoftware.com.ar contacte@tecnosoftware.com.ar