Unofficial Content
  • This documentation is valid for:

Qué es

Poder definir paquetes de deploy de aplicaciones (ya sea a servidores de aplicaciones en máquinas tradicionales, o servicios en la nube) y que los paquetes puedan armarse automáticamente a partir de esa definición.

Por ejemplo, dado un conjunto de objetos main en una KB de GX, ejecutar el siguiente .bat para generar automáticamente un paquete war con el cual hacer deploy a Bluemix:

rem Crear proyecto MyDeploy.gxdproj a partir de la KB
msbuild C:\GXsalto\Deploy\Deploy.msbuild /p:KBPath=C:\KBs\MyKB;ProjectName=MyDeploy;ObjectNames="MainHome"
rem El resultado es el archivo "C:\KBs\MyKB\Deploy\Java Environment\MyDeploy\MyDeploy.gxdproj"

rem Crear el war a partir de MyDeploy.gxdproj
msbuild "C:\KBs\MyKB\Deploy\Java Environment\MyDeploy\MyDeploy.gxdproj"
rem El resultado es el archivo "C:\KBs\MyKB\Deploy\Java Environment\MyDeploy\MyDeploy.war"

Versiones soportadas

Implementado (en proceso) para las versiones Evo3 y Salto.

Modo de Uso

Luego de haber hecho el armado de una aplicación con GX, para armar un paquete de deploy son necesarios dos pasos: crear una declaración de qué contiene el deploy, y armar el paquete a partir de esa declaración.

Paso 1. Crear Proyecto de Deploy

Para declarar qué es lo que se quiere incluir en un determinado paquete de deploy se utiliza un formato estándar basado en MSBuild, al que le llamamos proyecto de deploy.

Es un archivo de texto, en formato XML, al que por convención le asignamos la extensión .gxdproj (forma corta de GeneXus Deploy Project). Aunque por supuesto se puede escribir y modificar con cualquier editor de texto, también existe un mecanismo para generarlo automáticamente a partir de datos básicos como un conjunto de objetos main de una cierta KB, y el tipo de servidor de aplicaciones al que se quiere hacer deploy.

Para crear el archivo de un proyecto de deploy alcanza con ejecutar una línea de comando como esta:

rem Crear proyecto MyDeploy.gxdproj a partir de la KB
msbuild C:\GXsalto\Deploy\Deploy.msbuild /p:KBPath=C:\KBs\MyKB;ProjectName=MyDeploy

Por más detalles, ver más abajo la sección “Generador de Proyectos”

Paso 2. Armar Paquete de Deploy

para crear paquetes de deploy a partir de lo que se construyó en el paso anterior existen componentes que interpretan estas declaraciones y arman los paquetes en forma automática según las tecnologías y plataformas involucradas. Por ejemplo, para crear un war se puede ejecutar lo siguiente:

rem Crear el war a partir de MyDeploy.gxdproj
msbuild "C:\KBs\MyKB\Deploy\Java Environment\MyDeploy\MyDeploy.gxdproj"

El funcionamiento de esto se explica más detalladamente en la sección “Creadores de Paquetes”.

Detalles de la Arquitectura

Deploy Project

En un proyecto de deploy se declara a partir de qué se quiere armar un paquete. Los datos básicos son:

  • La identificación del lugar en que GX generó la aplicación y algunos datos sobre sus características: lenguaje en que se generó, bases de datos, si se utiliza GAM, si se usa el indexador de texto, etc.

  • La identificación de los nombres de objetos involucrados, incluyendo algunos metadatos sobre ellos: si son main, si implementan servicios REST o SOAP, etc.

Por ejemplo, Deploy Project Sample es la declaración de una unidad de deploy (deploy project) a ser armado a partir de lo que GeneXus generó para una aplicación Java / MySQL:

Generador de Proyectos

Para obtener un archivo de proyecto se puede ejecutar un proceso MSBuild que puede generarlos automáticamente a partir de algunos datos. Por ejemplo, ejecutando la siguiente línea de comandos:

msbuild C:\GXsalto\Deploy\Deploy.msbuild /p:ProjectName=Home;KBPath=C:\KBs\SampleKB;ObjectNames="SDMenu;Module_2.Home"

Se generará automáticamente un proyecto de armado Home.gxdproj que permitirá armar un paquete de deploy conteniendo los objetos Module_2.Home (Web Panel) y SDmenu (Dashboard), además de todo lo que sea necesario para soportarlos (transacciones, web panels, SDTs, data providers, etc.)

Las propiedades que están definidas en Deploy.msbuild (y que se pueden pasar como parámetro en la llamada a MSBuild) son:

<!-- Working KB Properties -->
<KBPath></KBPath>
<KBVersion></KBVersion>
<KBEnvironment></KBEnvironment>


<!-- Deploy Project Properties -->
<ProjectName></ProjectName>
<DeployPath></DeployPath>
<ObjectNames></ObjectNames>

Los parámetros requeridos son únicamente ProjectName y KBPath.

Se puede indicar la KBversion y KBEnvironment deseados, o dejar que tome los defaults.

Si no se especifican ObjectNames, se considerarán todos los objetos que sean main.

Si no se especifca un DeployPath, el default es $(KBPath)\Deploy\$(KBEnvironment)\$(ProjectName).

En el DeployPath se creará un archivo llamado $(ProjectName).gxdproj (en el ejemplo sería Home.gxdproj).

Creadores de Paquetes

Para crear un paquete sólo es necesario llamar a MSBuild pasándole el proyecto como parámetro. Por ejemplo, ejecutando la siguiente línea de comando,

msbuild "C:\KBs\SampleKB\Deploy\Java Environment\Home\Home.gxdproj"

se creará automáticamente un archivo C:\KBs\SampleKB\Deploy\Java Environment\Home\Home.war

Las propiedades que se pueden pasar como parametro son:

<Timestamp></Timestamp>
<ApplicationServer></ApplicationServer>
<ApplicationServerTemplate></ApplicationServerTemplate>

<Application_key></Application_key>
<Target_JRE><Target_JRE>

Timestamp indica el momento en el que se ejecuta la aplicacion, se utiliza para generar el nombre de la carpeta donde se hace el deploy, se debe especificar un valor

ApplicationServer indica el tipo de servidor al que se hace deploy (por ejemplo Generic Servlet versiones 2.3), se debe especificar un valor

ApplicationServerTemplate inidica el template a usar para generar los archivos (por ejemplo Generic_Servlet_v3_1.stg), se debe especificar un valor

Application_key indica la key de encriptacion que se utiliza en genexus, se debe especificar un valor desde genexus 15 upgrade 12.

Target_JRE indica la version de java con la que se va a ejecutar, es un valor entero (ej. Target_JRE=7), se debe especificar un valor desde genexus 15 upgrade 12.

Templates

La implementación de la generación de paquetes está basada en templates, en particular utilizando una tarea MSBuild que permite generar con StringTemplate.

Esto permitirá no solamente facilitar la implementación, sino también la posibilidad de que el usuario final pueda hacer ajustes según necesidades particulares, o contribuir con mejoras al mecanismo general.

Por ejemplo, los .war utilizados para deploy de aplicaciones Java deben incluir un archivo web.xml que declara los servlets incluidos en el war. Este archivo se genera utilizando templates que dependen de cuál es el tipo de application server utilizado (Nota: actualmente sólo está disponible el template para Generic Servlet versiones 2.3, 2.4, y 2.5, pero se irán agregando otros).

Descarga e Instalación

Lo necesario para utilizar GeneXus Deploy Projects puede descargarse desde esta carpeta pública. Es necesario:

  • Descargar el zip que corresponda a la versión de GX con la que se arma la KB, según si se trata de la versión Salto (GXDeployProjects.Salto.zip o la versión Evolution 3 (GXDeployProjects.Evo3.zip.
  • Extraer su contenido en el folder de instalación de GX.

    Bajo la instalación de GeneXus debe quedar la siguiente estructura:

    GeneXus.StringTemplate.MSBuild.Tasks.dll
    GeneXus.StringTemplate.Tasks.targets
    Deploy (folder con subfolders)

Desarrollo y Actualizaciones

Inicialmente esto formaba parte de la versión Salto de GeneXus, pero la idea es abrir esto como un desarrollo independiente de GX y open source. Esto contempla tres objetivos:

  1. Contemplar el soporte para Evolution 3

  2. Facilitar el ciclo de prueba - correcciones - actualizaciones

  3. Permitir la colaboración de terceros o la personalización para casos particulares

Los fuentes y todo lo necesario para armar estas cosas ya están disponibles en el repositorio SVN público de GeneXus Tools.

Los siguientes pasos serían pasar esta misma documentación a ese lugar, e incluso crear un proyecto en GeneXus Open, para poder organizar el trabajo y facilitar la comunicación entre quienes participen.

El mejor lugar para mandar feedback sobre este componente es el foro de build & deploy que se encuentra bajo http://www.genexus.com/foros.

Last update: February 2024 | © GeneXus. All rights reserved. GeneXus Powered by Globant