Una herramienta para la ejecución de código 4D en CLI

En la industria del desarrollo, el concepto CI/CD se ha convertido en una práctica estándar. Con cada modificación de código, se generan acciones automatizadas como pruebas, compilación, construcción, entrega y a veces, despliegue para garantizar que el código sea de alta calidad y se integre fácilmente en el sistema existente.

Estas acciones requieren una herramienta para ejecutar el código necesario. Como desarrolladores 4D, decidimos ofrecer una herramienta gratuita que permite a los desarrolladores ejecutar acciones elementales. Esta herramienta se llama tool4d, y agiliza el proceso de ejecución de las acciones necesarias dentro del entorno 4D.

En este artículo, exploraremos las funcionalidades de tool4d y cómo puede utilizarse para mejorar su proceso de desarrollo.

Esta nueva aplicación está dedicada principalmente a ser integrada en pipelines CI/CD. El objetivo principal de tool4d es ejecutar código 4D con un conjunto de instrucciones mínimo, una huella de memoria mínima y un tamaño mínimo. La aplicación tool4d puede verse como un subconjunto de la aplicación 4D.

¿Cómo funciona?

En primer lugar, tool4d se publica como 4D, por lo que comparten la misma versión y número de compilación.
Aunque tool4d se muestra con su icono, la aplicación sólo puede ejecutarse a través de la interfaz línea de comandos.
Su ejecución se realiza siempre en modo headless. Para retroalimentar la información, se puede utilizar el flujo stdout, incluso en Windows, de la siguiente manera:

LOG EVENT(Into system standard outputs; “message”)

Siempre se ejecuta la siguiente secuencia de métodos:
1. tool4d ejecuta el método base On Startup, excepto si se define el parámetro –skip-onstartup.
2. tool4d ejecuta el método designado por el parámetro –startup-method si está definido.
3. tool4d ejecuta el método base On Exit, excepto si se define el parámetro –skip-onstartup.
4. tool4d sale.

Para hacer tool4d lo más ligero posible, muchos elementos de 4D han sido deshabilitados, como el servidor de aplicaciones, el servidor web, el servidor SQL, el programador de copias de seguridad, etcétera.
Y por último, pero no menos importante, tool4d no necesita ninguna licencia para ejecutarse.
Puede encontrar más detalles en la documentación.

¿Cómo conseguirlo?

Las aplicaciones tool4d están disponibles en el portal de descarga de productos para tres sistemas objetivos: Windows, macOS Intel y macOS Silicon.
Como tool4d es gratuito y puede utilizarse en procesos CI/CD, puede obtenerlo sin autenticación en https://resources-downloads.4d.com con la cadena de consulta exacta para Descargas de productos.
Por ejemplo, las últimas versiones v20 LTS pueden descargarse directamente con estos enlaces:

https://resources-download.4d.com/release/20.x/20.0/latest/mac/tool4d_v20.0_mac_arm.tar.xz
https://resources-download.4d.com/release/20.x/20.0/latest/mac/tool4d_v20.0_mac_x86.tar.xz
https://resources-download.4d.com/release/20.x/20.0/latest/win/tool4d_v20.0_win.tar.xz

Los paquetes están comprimidos con el algoritmo tar.xz, lo que garantiza un tamaño de archivo mínimo. Si no tiene instalada en su sistema ninguna aplicación compatible con este formato, puede descomprimir el paquete utilizando las siguientes líneas de comando.

Windows:
tar xvzf {tool4dArchivoComprimido} -C {carpetaDestino}

macOS:
tar xvzf {herramienta4dArchivoComprimido}

Casos de uso

Hay muchos casos de uso para tool4d. Éstos son algunos de ellos, ¡pero le dejamos imaginar muchos otros casos de uso!

Compilación

tool4d es muy adecuado para tareas de construcción como pruebas unitarias o compilaciones. He aquí un ejemplo de un pequeño proyecto llamado compileThisProject compilando otro proyecto.
El proyecto compileThisProject obtiene una ruta de archivo de proyecto, lo compila y, a continuación, muestra el resultado de la compilación en el terminal. Su método base «On Startup» contiene este código:

LOG EVENT(Into system standard outputs; "Compilation starts\r\n")
var $projectPath : Text
var $result : Integer
var $compilationReturn : Object

// Obtención del valor de cadena del parámetro --user-param en CLI
$result:=Get database parameter(User param value; $projectPath)
If ($projectPath#"")
	$compilationReturn:=Compile project(File($projectPath))
	LOG EVENT(Into system standard outputs; "Compilation returns:\r\n"+JSON Stringify($compilationReturn; *))
End if 

La línea de comandos a ejecutar:

/Applications/tool4d.app/Contents/MacOS/tool4d --project "/Users/Me/compileThisProject/Project/compileThisProject.4DProject" --user-param "/Users/Me/Test/Project/Test.4DProject"

Y aquí está el resultado:

La compilación comienza
La compilación devuelve:
{
"success": true,
"errors": []
}

Integración continua

La compilación es un paso en los canales CI/CD. Sea cual sea su plataforma CI/CD, ¡puede utilizar tool4d para cada paso!
Ya hablamos de GitHub Actions en esta entrada del blog. Es una plataforma GitHub que permite ejecutar automáticamente acciones en eventos GitHub como empujar código o fusionar un pull request. Y estas acciones se pueden ejecutar en máquinas virtuales macOS o Windows.
Aquí tiene un ejemplo de script YAML para las acciones GitHub que ejecutan las pruebas unitarias en cada push de código en GitHub:

name: Unit Tests
on:
push:
branches: [ "main" ]
jobs:
Unit-tests-on-windows:
name: Unit Tests on Windows
runs-on: windows-latest
permissions: write-all
steps:
- uses: actions/checkout@v3
- name: "Download latest tool4d release and expand"
run: |
curl https://resources-download.4d.com/release/20.x/20.0/latest/win/tool4d_v20.0_win.tar.xz -o tool4d.tar.xz -sL  tar xvJf tool4d.tar.xz -C tool4d
- name: "Ejecutar pruebas unitarias"
run: |
./tool4d/tool4d.exe --project ${{ github.workspace }}\Project\myProject.4DProject --dataless --skip-onstartup --startup-method "runUnitTests"
Unit-tests-on-macos:
name: Unit Tests on macOS
needs: [Unit-tests-on-windows]
run-on: macOS-latest
permissions: write-all
steps:
- uses: actions/checkout@v3
- name: "Descarga la última versión de tool4d y expándela"
run: |
curl https://resources-download.4d.com/release/20.x/20.0/latest/mac/tool4d_v20.0_mac_x86.tar.xz -o tool4d.tar.xz -sL  tar xvzf tool4d.tar.xz
- name: "Ejecutar pruebas unitarias del proyecto"
run: |
./tool4d.app/Contents/MacOS/tool4d --project ${{ github.workspace }}/Project/myProject.4DProject --dataless --skip-onstartup --startup-method "runUnitTests"

Tenga en cuenta que tool4d no necesita licencia para ejecutarse, por lo que no es necesario registrar nada en las máquinas virtuales.

Mantenimiento

También puede utilizar tool4d para tareas de mantenimiento. Por ejemplo, si quiere verificar un archivo de datos del servidor 4D y asegurarse de que ningún usuario se conecte al servidor. Tenga en cuenta que para este uso, también puede utilizar la aplicación 4D Server con el parámetro «–utility»: ejecutará la misma secuencia de métodos que tool4d.

Línea de comandos para hacerlo
/Applications/4D/4D\ Server.app/Contents/MacOS/4D\ Server --utility --project "{pathToProjectFile}" --skip-onstartup --startup-method "verifyDataFile"

El método verifyDataFile contiene una llamada al comando VERIFY CURRENT DATA FILE.

 

Esperamos que tool4d le ayude en el diseño de sus canales CI/CD y en otras tareas.

Nos esforzamos constantemente por ofrecer a nuestros usuarios la mejor experiencia posible, y le animamos a compartir sus pensamientos y comentarios en el foro 4D. Sus comentarios nos ayudan a comprender mejor sus necesidades y a mejorar continuamente nuestros productos y servicios.

Avatar
• Propietario de producto - Damien Fuzeau se ha unido al equipo de 4D Product en febrero de 2019. Como Propietario de producto, está a cargo de escribir historias de usuario, y luego traducirlas a especificaciones funcionales. Su trabajo también implica asegurarse de que las implementaciones de funcionalidades entregadas estén cumpliendo con las necesidades del cliente. Damien es licenciado en ingeniería de software por la Universidad de Nantes. Estuvo más de 23 años en su anterior empresa, primero como desarrollador (descubriendo 4D en 1997), y más tarde como gerente de ingeniería y arquitecto de software. Esta compañía es un Partner OEM de 4D y ha desplegado softwares empresariales basados en 4D para miles de usuarios, en cientos de servidores. Por lo tanto, Damien está acostumbrado al desarrollo y despliegue de 4D en un contexto multilingüe.