Personalizar el DEPLOY con GeneXus

En los ciclos de desarrollo se necesita hacer llegar desde la KB hasta el ambiente de producción, con una determinada personalización, para que el sistema funcione en producción. 




GeneXus tiene la tarea de Build all bien resuelta, pero aun no contempla el Package ALL, ni el Deploy All, sino que hace el deploy para una deployment unit en forma aislada. 

En varias oportunidades surge la necesidad de personalizar los archivos que se necesitan enviar para el deploy. Esto implica cambiar archivos del tipo web.config, appsettings.json, client.cfg, etc. 

La personalización permite el ajuste necesarios para un correcto deploy de la aplicación.  

De que forma se puede hacer?

En un esquema general, se puede hacer el deploy de cada Deployment Unit. 


Tanto si se ejecuta la tarea de Deploy desde el IDE de GeneXus, como automatizando las tareas con MSBUILD y jenkins el proceso es similar. 

La personalización se puede hacer con el proyecto <DUName>_user.gxdproj, que es un proyecto del usuario, donde se pueden poner diferentes comandos para borrar, copiar, renombrar o personalizar archivos. 

La sintaxis de los proyectos MSBUILD no es demasiado amigable, pero una vez que se practica un poco, es fácil de entender. 


En el ejemplo, en el primer recuadro, se copia un directorio entero. 

En el segundo, se establecen algunas variables útiles para lo que viene mas abajo. 

En el tercer recuadro, se arma una lista de los archivos a copiar y se puede establecer cual será el directorio destino de dichos archivos. 

En el cuarto, se establece la tarea RemoveExtraFiles que permite borrar archivos. 

En el quito, se hacen 2 cosas, se copia un archivo cambiandole el nombre y también se ejecuta un comando que tiene el nombre de la DeploymentUnit antes de empaquetar la solución, si el mismo existe. 

Es bueno destacar que se pueden condicionar la ejecución de los comando con la palabra clave Condition, como esta en el ejemplo. 

En la Condition, se pueden usar propiedades ya existentes, como por ejemplo
$(DeploymentUnit) - El nombre de la deployment unit que estoy empaquetando. 

$(Generator) - Vale Java, C#, .NET, etc. Es bueno para poder condicionar por generador. 

$(DeployTarget) - Puede valor Local / Docker, etc... son todas las opciones que a la que puede hacerse deployment. 

Hay muchas mas que se pueden listar, corriendo la tarea msbuild con la opción /verbosity:diagnostic, y va a listar en el log, todas las propiedades y sus valores. 

Con la potencia de poder ejecutar comandos, y con las herramientas de personalizacion de archivos que nombre en un articulo pasado, se pueden realizar la mayoría de las tareas de personalización a las que nos hemos enfrentado. 

El DEPLOY ALL queda para otro post, porque tambien necesita personalización, pero ya depende de las caracteristicas de cada instalación. 

Comentarios

  1. Buenas Tardes Ingeniero Almeida, quisiera consultarte algo por favor? mí caso esta relacionado con el desarrollo en Gx17, dentro de un botón tengo un evento, si se cumple una condición, se debe invocar a un popup, y luego al volver del popup, se debe continuar la ejecución del evento, o sea que, debajo del llamado al popup hay más líneas de códigos que se deben ejecutar, pero al llamar al popup no hace la interrupción como ocurre en el ambiente Win, que recién al cerrar el popup continúa con la lectura del código. Gracias

    ResponderBorrar
    Respuestas
    1. Carlos, Te respondi en https://ealmeida.blogspot.com/2007/03/impresin-directa-impresora-en-el-web.html?showComment=1712313241779#c2066942985463003063

      Borrar

Publicar un comentario

1) Lee el post
2) Poné tu opinión sobre el mismo.
Todos los comentarios serán leidos y la mayoría son publicados.

Entradas más populares de este blog

Aplicación monolítica o distribuida?

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.