DevOps con Visual PbAutoBuild 2022

 


Hoy para celebrar el año entrante os traigo una nueva utilidad, para desplegar aplicaciones sin necesidad de compilar desde el IDE de PowerBuilder.

Para hacer este programita me he basado en el video de Dora Sistemas publicado en su canal de YouTube titulado: PowerCafé: DevOps con aplicaciones PowerServer 2022 y Jenkins

La idea es desplegar nuestras aplicaciones de una forma desentendida descargando las fuentes de Git. En este ejemplo he programando las tareas creando archivos .bat en lugar de usar Jenkins. Para ejecutar secuencialmente los .bat he usado el objeto n_runandwait de Topwiz Sofware.

Lo primero de todo es que para usar esta aplicación necesitamos tener nuestros proyectos exportados en formato .json

Para ello, basta con que pinchemos encima de alguno de nuestros proyectos y pulsemos el botón derecho de ratón para desplegar el menú emergente y pinchar en Export Build File (No confundir con Export... que sirve para exportar el archivo .srj)


En la ventana de exportación elegiremos la ruta de destino y marcaremos la opción de exportar la configuración de Git:


Básicamente mi programa de ejemplo tiene dos formas de funcionar, manual o automática.

Para el funcionamiento manual basta con abrir el fichero json y el programa detectará el tipo de proyecto que queremos desplegar.
Si queremos que el programa funcione de forma autónoma programando una tarea de Windows para que se ejecute sólo debemos crear una carpeta llamada auto en la ruta raíz del programa y ahí guardar los archivos json que queramos que el programa procese sólo.

Antes de entrar en mas detalles voy a comentar un poco el archivo Setup.ini que opciones tiene y luego intentaré explicar el funcionamiento del programa con cada tipo de proyecto.

En apartado [Setup]

json =  Sirve para recordar el último json abierto y abrirlo al abrir el programa. (Si se ha ejecutado de forma manual).

PbAutobuildPath =  Parámetro Opcional. Se puede incluir la ruta donde este PbAutobuild220.exe.

Ejemplo:
PbAutobuildPath = C:\Program Files (x86)\Appeon\PowerBuilderUtilities 22.0

Para cada proyecto  (o json) hay que crear un apartado con el nombre del proyecto al estilo de:

[projectName.json]

Nota:
Si los proyectos tienen cosas en común y no quieres duplicar la información, en el apartado [Setup] puedes poner los parámetros que quieras que sean comunes para todos los proyectos.
El programa primero intenta leer del apartado del proyecto y si no mira en el apartado [Setup].

version_control= S/N. Si marcamos S, Necesitamos descargar de GitHub el archivo *.srj del proyecto con la donde veremos la versión a publicar. (Parámetro sólo para ejecutar el programa de forma automática)

Para poder descargar el archivo de GitHUb habrá que rellenar lo siguientes parámetros, ya que tendré que crear una conexión a GitHub con mi programa:

ProfileVisibility =  Private or Public: Si el repositorio es Privado nos hara falta el personal Token.
GitHubProfileName =  Nombre del perfil de Github 
PersonalToken  =  Token de acceso personal al Perfil Privado
GitHubRepository = Nombre del repositorio
GitBranch =  Rama de donde bajaremos el archivo, normalmente main o master.
Pbl = Nombre del archivo pbl de PowerBuilder donde guardamos el proyecto.
filename = Nombre del fichero exportado del proyecto (*.srj) ejemplo: projectName.srj

Para Proyectos Nativos Cliente/Servidor: 

PBNativePath= Se puede indicar la ruta del servidor donde queremos dejar el programa compilado.

Para Proyectos PowerServer hay que indicar lo siguiente. 

UserName =  Usuario para Api PowerServer con seguridad JWT
UserPass =  Password Codificado en Base64URL para Api PowerServer con seguridad JWT

Nota:
 En mi ejemplo he supuesto que el proyecto PowerServer es con seguridad JWT  con un usuario y contraseña fija. Estos datos no se recomienda alojarlos en GitHub y por eso se los inyectare al archivo CluodSetting.ini dinámicamente en el momento de la compilación.

PowerServerPath= Ruta física del sitio web de la api en el servidor.

Nota:
Sólo se publicará existosamente la API de PowerServer si se ejecuta el ejemplo en el mismo servidor que esté alojada. Ya que hay que detener el sitio web, borrar los archivos publicados anteriormente, publicar la nueva compilación y reactivar el sitio web.

El UserName y el UserPass también hay que inyectarlos a la Clase DefaultUserStore.cs que es la que irá en la API de PowerServer. Aquí podemos completar los datos del Usuario o Claims con los siguentes parámetros:

Scope = serverapi
Name = Nombre y Apellido
GivenName = Nombre
FamilyName = Apellido
WebSite = SitioWeb
Email = Mail
EmailVerified = true

Si usamos el programa con Control de Versiones, el programa descargará el archivo *.srj y comprobará la versión publicada en GitHub. Si es superior ejecutará PbAutobuild220.exe si no no hará nada.

En Proyectos Nativos controla la versión de:

En Proyectos PowerClient:


 Y En proyectos PowerServer:


Una vez detectada la Versión, si es suprior actualizará el json con los nuevos datos, y empezará el proceso.
Para leer y modificar los archivos json he utilizado el objeto u_json descargado del perfil de GitHub  
Informaticon AG que me ha resultado mas sencillo para manipular los Json que los objetos Nativos de PowerBuilder. 
Si usamos el programa de forma manual abriendo un archivo Json, podemos indicar en un solo cuadro la la versión y se copiará automáticamente. En proyectos PowerClient/PowerServer habrá que indicar la fecha de disponibilidad y expiración así como la mínima versión compatible.

El programa genera dos archivos .log Log_Build.log y Log_Error.log para guardar todo los resultados de PbAutobuild220.exe  en un sólo lugar además de añadir información de los procesos de mi programa de ejemplo.
Nota:
 Los mensajes de error visuales sólo se muestran cuando el programa se usa de forma manual o individual.

En resumen:
Los Proyectos PowerClient se compilan y publican con PbAutobuild220.exe sin tener que hacer nada mas que borrar las fuentes al finalizar.
Los Proyectos Nativos podemos indicar donde queremos alojar la carpeta final con el ejecutable y los pbd. El programa renombrará la carpeta src con las fuentes por el nombre del proyecto y eliminará las fuentes descargadas.
Finalmente los Proyectos PowerServer son los que mas pasos requieren, ya que antes de la compilación hay que añadir el archivo CloudSettings.ini y modificar la clase DefaultUserStore.cs con la infromación de del Usuario de JWT. Además hay que detener y eliminar la API. Luego compilar, publicar reactivar la nueva API.

En fin es creo que es mas fácil ver el código fuente de el programa que explicar bien todo su funcionamiento. Espero que os resulte útil. Yo actualmente lo estoy usando, ya no compilo nada con IDE y es muy cómodo una vez lo tienes todo configurado y funcionando.

Os dejo como siempre el enlace de descarga en mi Drive al proyecto tal y como se presentó en el evento PowerTalks2023:


Conferencia de presentación del 27-01-2023:


Enlace a artículo sobre Release 2 del 13-02-2023:


Os dejo como siempre el enlace al proyecto en Github:

Comentarios