{"id":1714,"date":"2015-09-08T11:00:35","date_gmt":"2015-09-08T10:00:35","guid":{"rendered":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?p=1714"},"modified":"2015-09-08T10:25:30","modified_gmt":"2015-09-08T09:25:30","slug":"compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure","status":"publish","type":"post","link":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/","title":{"rendered":"CompartiMOSS 35: Integraci\u00f3n Continua para Apps Office 365 con Visual Studio Online y Azure"},"content":{"rendered":"<p>Como cada tres meses se ha publicado un nuevo n\u00famero de la revista de habla hispana <a href=\"http:\/\/www.compartimoss.com\/\" target=\"_blank\">CompartiMOSS<\/a> en la que he contribuido con un articulo hablando de <a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-25\/integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\" target=\"_blank\">ALM Application Lifecycle Management<\/a>. Adem\u00e1s en este n\u00famero hay una gran participaci\u00f3n de compa\u00f1eros de Encamina como:<\/p>\n<ul>\n<li><a href=\"http:\/\/blogs.encamina.com\/negocios-sharepoint\/\" target=\"_blank\">Alberto D\u00edaz<\/a>: <a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-25\/aplicaciones-empresariales-en-office-365\" target=\"_blank\">Aplicaciones Empresariales para Office 365<\/a><\/li>\n<li><a href=\"http:\/\/blogs.encamina.com\/everyware\/\" target=\"_blank\">Javier Menendez<\/a>:\u00a0<a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-25\/machine-learning-usos-y-aplicaciones\" target=\"_blank\">Machine Learning: Usos y Aplicaciones<\/a><\/li>\n<li><a href=\"http:\/\/blogs.encamina.com\/sextosharepoint\/\" target=\"_blank\">Fabian Calvo:<\/a>\u00a0<a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-25\/generando-maquinas-como-churros-azure-devops-y-powershell-desired-state-configuration\" target=\"_blank\">Generando m\u00e1quinas como churros: Azure DevOps y Powershell Desired State Configuration (DSC<\/a><\/li>\n<li>Sergio Hernandez:\u00a0<a href=\"http:\/\/www.compartimoss.com\/revistas\/numero-25\/generando-maquinas-como-churros-azure-devops-y-powershell-desired-state-configuration\" target=\"_blank\">Por un SharePoint Sostenible \u2013 Controla tus listas y bibliotecas, Conjunto de documentos<\/a><\/li>\n<\/ul>\n<p><!--more--><\/p>\n<p>Desde la primera versi\u00f3n de SharePoint, all\u00e1 en 2003, los equipos de desarrollo tradicionalmente han tenido muchos problemas con el despliegue de la soluci\u00f3n en otros entornos. Motivos hay muchos, en primer lugar la propia plataforma que fue creciendo exponencialmente el n\u00famero de usuarios respecto a los desarrolladores que hab\u00eda, pero de la misma forma no hay que quitar responsabilidad a los equipos de desarrollo. Este hecho provoco que trabajar con SharePoint fuera un problema para muchos desarrolladores que ven\u00edan de otros entornos m\u00e1s simples (Aplicaciones escritorio, Web,\u2026). Ahora bien como todo buen producto, fue evolucionando y se fue adaptando a la misma forma que se hace en otras aplicaciones (con alguna peculiaridad propia de la plataforma). \u00a0En este art\u00edculo vamos a ver como configurar la Build de nuestro Visual Studio Online para realizar integraci\u00f3n continua.<\/p>\n<p><strong>\u00bfQu\u00e9 es integraci\u00f3n continua?<\/strong><\/p>\n<p>La integraci\u00f3n continua es un modelo inform\u00e1tico propuesto inicialmente por Martin Fowler que consiste en hacer integraciones autom\u00e1ticas de un proyecto lo m\u00e1s a menudo posible para as\u00ed poder detectar fallos cuanto antes. Entendemos por integraci\u00f3n, la compilaci\u00f3n y ejecuci\u00f3n de pruebas de todo un proyecto. Las principales ventajas que tiene son:<\/p>\n<ul>\n<li>Permite detectar y solucionar problemas de integraci\u00f3n de forma continua, evitando el caos de \u00faltima hora cuando se acercan las fechas de entrega.<\/li>\n<li>Disponibilidad constante de una versi\u00f3n para pruebas, demos o lanzamientos anticipados.<\/li>\n<li>Monitorizaci\u00f3n constante de las m\u00e9tricas del c\u00f3digo.<\/li>\n<li>Ejecuci\u00f3n inmediata de pruebas (Unitarias, UI, Performance).<\/li>\n<\/ul>\n<p><strong>Sobre Visual Studio Online<\/strong><\/p>\n<p>Aunque por su nombre quiz\u00e1s pueda llevar a confusi\u00f3n Visual Studio Online (VSO) es la herramienta proporcionada por Microsoft para gestionar todo el ciclo de vida o Application Lifecycle Management (ALM) de una aplicaci\u00f3n. Este proceso empieza mucho antes de que cualquier desarrollador escriba una l\u00ednea de c\u00f3digo y no termina cuando se pone la primera versi\u00f3n en producci\u00f3n.<\/p>\n<p>Con VSO, se puede llevar la planificaci\u00f3n del propio proyecto, aplicar una metodolog\u00eda \u00e1gil, separar\/asignar\u00a0 tareas,\u00a0 llevar el control del c\u00f3digo fuente (bien con repositorios centralizados como Team Foundation Server o con repositorios distribuidos como Git) e incluso realizar el despliegue de nuestro desarrollo en diferentes entornos (este \u00faltimo aspecto es el que vamos a tratar en este art\u00edculo).<\/p>\n<p>Visual Studio Online es gratis para equipos de hasta 5 desarrolladores, lo que hace que para empresas peque\u00f1as o que acaban de empezar les sea de gran utilidad. Por lo general cuando analizamos la utilizaci\u00f3n de un producto Online respecto a uno OnPremise se valora si tienen las mismas caracter\u00edsticas. En este caso Visual Studio Online tiene m\u00e1s caracter\u00edsticas que la soluci\u00f3n en OnPremise debido a que ya tienen instaladas todas las utilidades necesarias para integraci\u00f3n continua, por ejemplo, para SharePoint en un entorno local necesitar\u00edamos instalar las librer\u00edas de del servidor.<\/p>\n<p><strong>Manos a la obra<\/strong><\/p>\n<p>En primer lugar, partimos de la base que disponemos de una App de SharePoint del tipo Provider-Hosted. Como proveedor de alojamiento vamos a utilizar Azure. Para ello:<\/p>\n<ul>\n<li>Abrimos Visual Studio -&gt; Templates -&gt; Visual C# -&gt; Office \/SharePoint -&gt; Apps-&gt; App for SharePoint.<\/li>\n<li>A continuaci\u00f3n, seleccionamos el tipo de alojamiento Provider-Hosted para nuestra aplicaci\u00f3n.<\/li>\n<\/ul>\n<p><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image1-e1441703768498.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1727\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image1-e1441703768498.png\" alt=\"image1\" width=\"500\" height=\"373\" \/><\/a><\/p>\n<div><\/div>\n<ul>\n<li><span lang=\"ES-UY\"><span style=\"color: #000000\">Seleccionamos el tipo de autenticaci\u00f3n que vamos a utilizar. En caso de Office 365 utilizaremos Windows Azure Access Control Service, si estamos en un entorno On Premise utilizaremos un Certificado de una entidad autorizada.<\/span><\/span><\/li>\n<\/ul>\n<div><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1724 size-medium\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image2-300x219.png\" alt=\"image2\" width=\"300\" height=\"219\" \/><\/a><\/div>\n<ul>\n<li><span lang=\"ES-UY\"><span style=\"color: #000000\">Una vez tenemos la estructura del proyecto creada publicaremos la Aplicaci\u00f3n MVC en un sitio de Azure. Para ello en primer lugar nos dirigimos al explorador de soluciones, se selecciona la aplicaci\u00f3n MVC, bot\u00f3n derecho y pulsar sobre Publicar.<\/span><\/span><\/li>\n<\/ul>\n<div><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero25\/Integracion-Continua-para-Apps-Office-365-con-Visual-Studio-Online-y-Azure\/image3.png\" alt=\"Imagen 3.- Publicaci\u00f3n de la App\" \/><\/div>\n<ul>\n<li><span lang=\"ES-UY\"><span style=\"color: #000000\">Dentro de las opciones disponibles Seleccionaremos Microsoft Azure Web Apps.<\/span><\/span><\/li>\n<\/ul>\n<div><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image4-e1441703882563.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1729\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image4-e1441703882563.png\" alt=\"image4\" width=\"500\" height=\"402\" \/><\/a><\/div>\n<ul>\n<li><span lang=\"ES-UY\"><span style=\"color: #000000\">A continuaci\u00f3n se crea o utiliza una Web Apps ya existente:<\/span><\/span><\/li>\n<\/ul>\n<div><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image5-e1441703912133.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1730\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image5-e1441703912133.png\" alt=\"image5\" width=\"500\" height=\"392\" \/><\/a><\/div>\n<ul>\n<li>Haga clic en Siguiente y seleccione la forma en la que se va a desplegar bien en modo depuraci\u00f3n (debug) bien en producci\u00f3n (release). A continuaci\u00f3n, se pulsa sobre Publish.<\/li>\n<\/ul>\n<p><strong>Crear el servicio de Visual Studio Online en Azure<\/strong><\/p>\n<p>En la subscripci\u00f3n de Azure hay que crear el servicio de Visual Studio Online para permitirle acceder al repositorio de c\u00f3digo fuente. Para ello:<\/p>\n<ul>\n<li>Vaya al Portal de Azure, seleccione su servicio en la nube o sitio web, o bien cree uno nuevo. Para ello, seleccione el icono + en la parte inferior izquierda y elija Servicio en la nube o Sitio web y, a continuaci\u00f3n, Creaci\u00f3n r\u00e1pida. Haga clic en el v\u00ednculo Configurar publicaci\u00f3n con Visual Studio Online.<\/li>\n<\/ul>\n<div><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero25\/Integracion-Continua-para-Apps-Office-365-con-Visual-Studio-Online-y-Azure\/image6.png\" alt=\"Imagen 6.- Creaci\u00f3n del servicio de Visual Studio Online.\" \/><\/div>\n<ul>\n<li><span lang=\"ES-UY\"><span style=\"color: #000000\">En el asistente, escriba el nombre de la cuenta de Visual Studio Online en el cuadro de texto y haga clic en el v\u00ednculo Autorizar ahora. Puede que se le solicite que inicie sesi\u00f3n.<\/span><\/span><\/li>\n<\/ul>\n<div><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero25\/Integracion-Continua-para-Apps-Office-365-con-Visual-Studio-Online-y-Azure\/image7.png\" alt=\"Imagen 7.- Autorizaci\u00f3n a VSO.\" \/><\/div>\n<ul>\n<li><span lang=\"ES-UY\"><span style=\"color: #000000\">En el cuadro de di\u00e1logo emergente de OAuth, elija Aceptar para autorizar a Azure a que configure el proyecto de equipo en VSO.<\/span><\/span><\/li>\n<\/ul>\n<div><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero25\/Integracion-Continua-para-Apps-Office-365-con-Visual-Studio-Online-y-Azure\/image8.png\" alt=\"Imagen 8.- Solicitud de acceso al Repositorio\" \/><\/div>\n<ul>\n<li><span lang=\"ES-UY\"><span style=\"color: #000000\">Si la autorizaci\u00f3n se realiza correctamente, ver\u00e1 una lista desplegable que contiene los proyectos de equipo de Visual Studio Online. Seleccione el nombre del proyecto de equipo que ha creado en los pasos anteriores y presione el bot\u00f3n de la marca de verificaci\u00f3n del asistente.<\/span><\/span><\/li>\n<\/ul>\n<div><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero25\/Integracion-Continua-para-Apps-Office-365-con-Visual-Studio-Online-y-Azure\/image9.png\" alt=\"Imagen 9.- Selecci\u00f3n de repositorio a desplegar\" \/><\/div>\n<ul>\n<li>Una vez que el proyecto se haya vinculado, ver\u00e1 instrucciones para registrar los cambios en el proyecto de equipo de Visual Studio Online. La pr\u00f3xima vez que se registre, Visual Studio Online compilar\u00e1 e implementar\u00e1 el proyecto en Azure. Para probarlo ahora, haga clic en el v\u00ednculo Proteger desde Visual Studio y, a continuaci\u00f3n, en Iniciar Visual Studio (o el bot\u00f3n equivalente de Visual Studio situado en la parte inferior de la pantalla del portal).<\/li>\n<\/ul>\n<div><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero25\/Integracion-Continua-para-Apps-Office-365-con-Visual-Studio-Online-y-Azure\/image10.png\" alt=\"Imagen 9.- Creaci\u00f3n del Servicio\" \/><\/div>\n<p><strong>Tareas Previas<\/strong><\/p>\n<p>El punto de partida para empezar con la integraci\u00f3n continua de las Aplicaciones es el siguiente paquete de Codeplex: <a href=\"https:\/\/officesharepointci.codeplex.com\/\"><span lang=\"ES-UY\">https:\/\/officesharepointci.codeplex.com\/<\/span><\/a><\/p>\n<p>Este paquete tiene dos carpetas:<\/p>\n<ol>\n<li><em>BuildProcessTemplates<\/em>: Ficheros xml que tienen la serie de requisitos que va a realizar la build.<\/li>\n<li><em>DeployScript<\/em>: Una serie de Script PowerShell para poder instalar la aplicaci\u00f3n en los entornos necesarios. Estos Scripts no asumen que la aplicaci\u00f3n ya existe.<\/li>\n<\/ol>\n<p>El proyecto de CodePlex que estamos utilizando asume que la aplicaci\u00f3n ya est\u00e1 registrada en tu entorno. Para las pruebas en primer lugar vamos a registrar la aplicaci\u00f3n para ello iremos a https:\/\/sitiodeveloper\/_layouts \/appregnew.aspx y registrar la aplicaci\u00f3n.<\/p>\n<p><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image11-e1441703973855.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1731\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image11-e1441703973855.png\" alt=\"image11\" width=\"500\" height=\"214\" \/><\/a><\/p>\n<p><span lang=\"ES-UY\"><span style=\"color: #000000\">Con el ID Cliente y la Clave Secreta la introducimos en la aplicaci\u00f3n. Por un lado dentro de los par\u00e1metros del Web.config y por otro lado en el manifiesto de la APP de SharePoint tal y como visualizamos en la siguiente imagen:<\/span><\/span><\/p>\n<p><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero25\/Integracion-Continua-para-Apps-Office-365-con-Visual-Studio-Online-y-Azure\/image12.png\" alt=\"Imagen 11.- Actualizaci\u00f3n de los archivos Web.config y de manifiesto de la App\" \/><\/p>\n<p><strong>Agregar el paquete de Codeplex dentro de nuestro Repositorio de C\u00f3digo<\/strong><\/p>\n<p>Para agregar el paquete en el repositorio de c\u00f3digo:<\/p>\n<ul>\n<li>Copiar las carpetas \u00abDeployScripts\u00bb \u00a0y \u00abBuildProcessTemplates\u00bb \u00a0descargadas del Proyecto de Codeplex dentro de la carpeta del Proyecto.<\/li>\n<li>Ahora que la estructura de las carpetas esta de la manera en la que este dentro del repositorio de c\u00f3digo fuente. Hacer clic con el bot\u00f3n derecho en el nodo del proyecto en el Explorador de control de c\u00f3digo fuente y elegir \u00abAdd Items to Folder\u00bb<\/li>\n<\/ul>\n<div><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero25\/Integracion-Continua-para-Apps-Office-365-con-Visual-Studio-Online-y-Azure\/image13.png\" alt=\"Imagen 12.- Inicio de mapeo en TFS\" \/><\/div>\n<ul>\n<li>Se advierte que hay dos elementos que han cambiado en el proyecto existente. Aceptamos y elegimos todos los elementos a a\u00f1adir.<\/li>\n<li>A continuaci\u00f3n, llega la hora de indicar los valores en los que nosotros queremos realizar la modificaci\u00f3n. Para ello vamos a la carpeta DeployScripts\/SharePointApp\/Parameters Aqu\u00ed es donde a\u00f1adimos los valores de nuestro Office 365, SharePoint OnPremise o Web Deployment (en caso de que no sea una Web APP de Azure).<\/li>\n<\/ul>\n<div><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image14-e1441704005746.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1732\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image14-e1441704005746.png\" alt=\"image14\" width=\"500\" height=\"148\" \/><\/a><\/div>\n<p><strong>Crear una definici\u00f3n de la Build<\/strong><\/p>\n<p>Una vez ya tenemos el servicio de Visual Studio Online funcionando en Azure, crearemos una definici\u00f3n de la Build en el que configuraremos la integraci\u00f3n continua. En estas definiciones se puede configurar varios aspectos:<\/p>\n<ul>\n<li>Evento que provoca que se ejecute: por ejemplo cada check-in<\/li>\n<li>Periodicidad: todos los d\u00edas a una determinada hora, etc\u2026<\/li>\n<\/ul>\n<p>Es posible (a la vez que recomendable) que en cada proyecto tengamos varias definiciones, es posible que nos interese diariamente desplegar nuestros desarrollo en un entorno de preproducci\u00f3n, pero tambi\u00e9n es necesario por ejemplo que cada vez que se suba un cambio se testeen si se han pasado las pruebas unitarias o se han cumplido los requisitos de calidad establecidos.<\/p>\n<ul>\n<li>Abrimos Visual Studio, en el explorador de soluciones pulsar sobre la pesta\u00f1a Team Explorer y seleccionar sobre el icono de Builds.<\/li>\n<\/ul>\n<div><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero25\/Integracion-Continua-para-Apps-Office-365-con-Visual-Studio-Online-y-Azure\/image15.png\" alt=\"Imagen 14.- Acceso a la secci\u00f3n de Builds\" \/><\/div>\n<ul>\n<li>Pulsamos sorbe la Opci\u00f3n de New Build Definition:<\/li>\n<\/ul>\n<div><img decoding=\"async\" src=\"http:\/\/www.compartimoss.com\/PublishingImages\/Numero25\/Integracion-Continua-para-Apps-Office-365-con-Visual-Studio-Online-y-Azure\/image16.png\" alt=\"Imagen 15.- Opci\u00f3n New Build Definition\" \/><\/div>\n<ul>\n<li>A la hora de la creaci\u00f3n tendremos una serie de pesta\u00f1as laterales en la que agregaremos la configuraci\u00f3n de la Build.\n<ul>\n<li><strong>Trigger<\/strong>; Esto par\u00e1metro establece cada cuento tiempo queremos ejecutar la BUILD. Dependiendo de lo que realice la definici\u00f3n optaremos una soluci\u00f3n u otra. Quiz\u00e1s subir a un entorno de Integraci\u00f3n solo lo queremos realizar una vez al d\u00eda, pero por el contrario s\u00ed que queremos que cada Check In que se realice se analice el c\u00f3digo subido al gestos del c\u00f3digo fuentes. Todas estas opciones las configuramos en la siguiente pantalla:<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<div><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image17-e1441704057823.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1733\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image17-e1441704057823.png\" alt=\"image17\" width=\"500\" height=\"229\" \/><\/a><\/div>\n<ul>\n<ul>\n<li><strong>Source Settings: <\/strong>Agregaremos los proyectos que se van a compilar en cada Build.<\/li>\n<li><strong>Build Defaults<\/strong>: Seleccionamos el Build Controller y la ubicaci\u00f3n donde va a estar el resultado de la build.<\/li>\n<\/ul>\n<\/ul>\n<div><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image18-e1441704085439.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1734\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image18-e1441704085439.png\" alt=\"image18\" width=\"500\" height=\"167\" \/><\/a><\/div>\n<ul>\n<ul>\n<li><strong>Process: <\/strong>En esta opci\u00f3n seleccionamos el Template que vamos a utilizar para esta Build, para realizar la integraci\u00f3n continua con las APP seleccionaremos el template que nos hemos descargado de CodePlex (m\u00e1s adelante veremos c\u00f3mo personalizar este template)<\/li>\n<\/ul>\n<\/ul>\n<div><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image19-e1441704114356.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1735\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image19-e1441704114356.png\" alt=\"image19\" width=\"500\" height=\"96\" \/><\/a><\/div>\n<p>Dentro de los par\u00e1metros de este proceso de Build tendremos que a\u00f1adir lo siguiente:<\/p>\n<ul>\n<ol>\n<li>Advanced-&gt; MSBuild Arguments: \/p:ActivePublishProfile=\u00bbperfil de Azure\u00bb<\/li>\n<li>Misc-&gt; Deployment Script Ruta donde hemos dejado el fichero SharePointAppDeloy.ps1 (descargado previamente de Codeplex)<\/li>\n<\/ol>\n<\/ul>\n<div><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image20-e1441704149340.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1736\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image20-e1441704149340.png\" alt=\"image20\" width=\"500\" height=\"276\" \/><\/a><\/div>\n<ul>\n<li>A continuaci\u00f3n, ejecutamos la build de forma manual y si todo ha ido bien se muestra una pantalla como la siguiente:<\/li>\n<\/ul>\n<div><strong><a href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image21-e1441704175226.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1737\" src=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image21-e1441704175226.png\" alt=\"image21\" width=\"500\" height=\"270\" \/><\/a><\/strong><\/div>\n<div>\n<p><strong>Conclusi\u00f3n<\/strong><\/p>\n<p>El proceso de ALM es muy necesario en cualquier plataforma y Office 365\/SharePoint no es una excepci\u00f3n, en este art\u00edculo hemos visto como configurar un proceso de integraci\u00f3n continua para nuestras Apps.\u00a0 Este proceso, conforme a las necesidades de cada equipo y a los requisitos, se va mejorando con otras definiciones de Build, definiciones que se pueden encargar de verificar la calidad del c\u00f3digo descrito, de pasar los Test Unitarios, pruebas de carga y\/o de la interfaz.<\/p>\n<div><strong>\u00a0<\/strong><\/div>\n<\/div>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content --><span class=\"et_bloom_bottom_trigger\"><\/span>","protected":false},"excerpt":{"rendered":"<p>Como cada tres meses se ha publicado un nuevo n\u00famero de la revista de habla hispana CompartiMOSS en la que he contribuido con un articulo hablando de ALM Application Lifecycle Management. Adem\u00e1s en este n\u00famero hay una gran participaci\u00f3n de &hellip; <a href=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":8,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[119,2],"tags":[31,37,155],"class_list":["post-1714","post","type-post","status-publish","format-standard","hentry","category-azure-2","category-buenas-practicas","tag-alm","tag-azure","tag-visual-studio-online"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v18.2.1 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>CompartiMOSS 35: Integraci\u00f3n Continua para Apps Office 365 con Visual Studio Online y Azure - Desarrollando sobre SharePoint<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"CompartiMOSS 35: Integraci\u00f3n Continua para Apps Office 365 con Visual Studio Online y Azure - Desarrollando sobre SharePoint\" \/>\n<meta name=\"twitter:description\" content=\"Como cada tres meses se ha publicado un nuevo n\u00famero de la revista de habla hispana CompartiMOSS en la que he contribuido con un articulo hablando de ALM Application Lifecycle Management. Adem\u00e1s en este n\u00famero hay una gran participaci\u00f3n de &hellip; Continue reading &rarr;\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image1-e1441703768498.png\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Adri\u00e1n D\u00edaz\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\\\/#article\",\"isPartOf\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\\\/\"},\"author\":{\"name\":\"Adri\u00e1n D\u00edaz\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"headline\":\"CompartiMOSS 35: Integraci\u00f3n Continua para Apps Office 365 con Visual Studio Online y Azure\",\"datePublished\":\"2015-09-08T10:00:35+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\\\/\"},\"wordCount\":1882,\"commentCount\":0,\"image\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2015\\\/09\\\/image1-e1441703768498.png\",\"keywords\":[\"alm\",\"azure\",\"visual studio online\"],\"articleSection\":[\"Azure\",\"buenas practicas\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\\\/\",\"url\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\\\/\",\"name\":\"CompartiMOSS 35: Integraci\u00f3n Continua para Apps Office 365 con Visual Studio Online y Azure - Desarrollando sobre SharePoint\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\\\/#primaryimage\"},\"image\":{\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2015\\\/09\\\/image1-e1441703768498.png\",\"datePublished\":\"2015-09-08T10:00:35+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"http:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2015\\\/09\\\/image1-e1441703768498.png\",\"contentUrl\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/wp-content\\\/uploads\\\/sites\\\/8\\\/2015\\\/09\\\/image1-e1441703768498.png\",\"width\":500,\"height\":373},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#website\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/\",\"name\":\"Desarrollando sobre SharePoint\",\"description\":\"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/#\\\/schema\\\/person\\\/c9bfaede1bfba9564bb7f500788782bb\",\"name\":\"Adri\u00e1n D\u00edaz\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g\",\"caption\":\"Adri\u00e1n D\u00edaz\"},\"description\":\"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.\",\"url\":\"https:\\\/\\\/blogs.encamina.com\\\/desarrollandosobresharepoint\\\/author\\\/desarrollandosobresharepoint\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"CompartiMOSS 35: Integraci\u00f3n Continua para Apps Office 365 con Visual Studio Online y Azure - Desarrollando sobre SharePoint","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/","twitter_card":"summary_large_image","twitter_title":"CompartiMOSS 35: Integraci\u00f3n Continua para Apps Office 365 con Visual Studio Online y Azure - Desarrollando sobre SharePoint","twitter_description":"Como cada tres meses se ha publicado un nuevo n\u00famero de la revista de habla hispana CompartiMOSS en la que he contribuido con un articulo hablando de ALM Application Lifecycle Management. Adem\u00e1s en este n\u00famero hay una gran participaci\u00f3n de &hellip; Continue reading &rarr;","twitter_image":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image1-e1441703768498.png","twitter_misc":{"Escrito por":"Adri\u00e1n D\u00edaz","Tiempo de lectura":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/#article","isPartOf":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/"},"author":{"name":"Adri\u00e1n D\u00edaz","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"headline":"CompartiMOSS 35: Integraci\u00f3n Continua para Apps Office 365 con Visual Studio Online y Azure","datePublished":"2015-09-08T10:00:35+00:00","mainEntityOfPage":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/"},"wordCount":1882,"commentCount":0,"image":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image1-e1441703768498.png","keywords":["alm","azure","visual studio online"],"articleSection":["Azure","buenas practicas"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/","url":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/","name":"CompartiMOSS 35: Integraci\u00f3n Continua para Apps Office 365 con Visual Studio Online y Azure - Desarrollando sobre SharePoint","isPartOf":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website"},"primaryImageOfPage":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/#primaryimage"},"image":{"@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/#primaryimage"},"thumbnailUrl":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image1-e1441703768498.png","datePublished":"2015-09-08T10:00:35+00:00","author":{"@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"http:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/compartimoss-35-integracion-continua-para-apps-office-365-con-visual-studio-online-y-azure\/#primaryimage","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image1-e1441703768498.png","contentUrl":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-content\/uploads\/sites\/8\/2015\/09\/image1-e1441703768498.png","width":500,"height":373},{"@type":"WebSite","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#website","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/","name":"Desarrollando sobre SharePoint","description":"Arquitectura, buenas pr\u00e1cticas y desarrollo sobre la nueva herramienta de Microsoft SharePoint 2016","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Person","@id":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/#\/schema\/person\/c9bfaede1bfba9564bb7f500788782bb","name":"Adri\u00e1n D\u00edaz","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/fe10b9eaf8ce4565ec75fba5a0d121c16186696e515cad2bedd42f6cf54e2007?s=96&d=mm&r=g","caption":"Adri\u00e1n D\u00edaz"},"description":"Adri\u00e1n D\u00edaz es Ingeniero Inform\u00e1tico por la Universidad Polit\u00e9cnica de Valencia. Es MVP de Microsoft en la categor\u00eda Office Development desde 2014, MCPD de SharePoint 2010, Microsoft Active Profesional y Microsoft Comunity Contribuitor 2012. Cofundador del grupo de usuarios de SharePoint de Levante LevaPoint. Lleva desarrollando con tecnolog\u00edas Microsoft m\u00e1s de 10 a\u00f1os y desde hace 3 a\u00f1os est\u00e1 centrado en el desarrollo sobre SharePoint. Actualmente es Software &amp; Cloud Architect Lead en ENCAMINA.","url":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/author\/desarrollandosobresharepoint\/"}]}},"_links":{"self":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1714","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/users\/8"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/comments?post=1714"}],"version-history":[{"count":0,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/posts\/1714\/revisions"}],"wp:attachment":[{"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/media?parent=1714"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/categories?post=1714"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.encamina.com\/desarrollandosobresharepoint\/wp-json\/wp\/v2\/tags?post=1714"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}