Un outil pour l’exécution de code 4D en CLI

Dans l’industrie du développement, le concept CI/CD est devenu une pratique standard. À chaque modification du code, des actions automatisées telles que le test, la compilation, la construction, la livraison et parfois le déploiement sont générées pour garantir que le code est de haute qualité et qu’il s’intègre facilement dans le système existant.

Ces actions nécessitent un outil pour exécuter le code nécessaire. En tant que développeurs 4D, nous avons décidé de fournir un outil gratuit qui permet aux développeurs d’exécuter les actions élémentaires. Cet outil, appelé tool4d, rationalise le processus d’exécution des actions nécessaires dans l’environnement 4D.

Dans cet article, nous allons explorer les fonctionnalités de tool4d et la manière dont il peut être utilisé pour améliorer votre processus de développement.

Cette nouvelle application est principalement destinée à être intégrée dans les pipelines CI/CD. L’objectif principal de tool4d est donc d’exécuter du code 4D avec un jeu d’instructions minimal, une empreinte mémoire minimale et une taille minimale. L’application tool4d peut être considérée comme un sous-ensemble de l’application 4D.

Comment fonctionne-t-il ?

Tout d’abord, tool4d est publié comme 4D. Ils partagent donc la même version et le même numéro de construction.
Même si tool4d est affiché avec sa propre icône, l’application ne peut être exécutée que via l’interface en ligne de commande (CLI).
Son exécution se fait toujours en mode headless. Pour renvoyer des informations, vous pouvez utiliser le flux stdout, même sous Windows, comme suit :

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

La séquence de méthodes suivante est toujours exécutée :
1. tool4d exécute la méthode base Sur ouverture, sauf si le paramètre –skip-onstartup est défini.
2. tool4d exécute la méthode désignée par le paramètre –startup-method s’il est défini.
3. tool4d exécute la méthode base Sur fermeture, sauf si le paramètre –skip-onstartup est défini.
4. tool4d quitte.

Pour rendre tool4d aussi léger que possible, de nombreux éléments de 4D ont été désactivés, tels que le serveur d’application, le serveur Web, le serveur SQL, le planificateur de sauvegarde, etc.
Enfin, tool4d n’a besoin d’aucune licence pour fonctionner.
Vous trouverez plus de détails dans la documentation.

Comment l’obtenir ?

Les applications tool4d sont disponibles sur le portail Product Download pour trois systèmes cibles : Windows, macOS Intel et macOS Silicon.
Comme tool4d est gratuit et peut être utilisé dans les canaux CI/CD, vous pouvez l’obtenir sans authentification sous https://resources-downloads.4d.com avec la chaîne de requête exacte pour Product Downloads.
Par exemple, les dernières versions v20 LTS peuvent être téléchargées directement avec ces liens :

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

Les paquets sont compressés avec l’algorithme tar.xz, garantissant une taille de fichier minimale. Si aucune application compatible avec ce format n’est installée sur votre système, vous pouvez décompresser le paquet en utilisant les lignes de commande suivantes.

Windows :
tar xvzf {tool4dCompressedFile} -C {destinationFolder}

macOS :
tar xvzf {tool4dCompressedFile}

Cas d’utilisation

Il existe de nombreux cas d’utilisation de tool4d. En voici quelques-uns, mais nous vous laissons imaginer de nombreux autres cas d’utilisation !

Compilation

tool4d est très adapté à la construction de tâches telles que les tests unitaires ou les compilations. Voici un exemple d’un petit projet nommé compileThisProject qui compile un autre projet.
Le projet compileThisProject récupère le chemin d’un fichier projet, le compile, puis affiche le résultat de la compilation dans le terminal. Sa méthode de base de données « Sur ouverture » contient ce code :

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

// Getting the string value of the --user-param parameter in the 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 ligne de commande à exécuter :

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

Et voici le résultat :

Compilation starts
Compilation returns:
{
"success" : true,
"errors" : []
}

Intégration continue

La compilation est une étape dans les canaux CI/CD. Quelle que soit votre plateforme CI/CD, vous pouvez utiliser tool4d pour chaque étape !
Nous avons déjà parlé de GitHub Actions dans cet article. Il s’agit d’une plateforme GitHub qui vous permet d’exécuter automatiquement des actions sur les événements GitHub, comme pousser du code ou fusionner une pull request. Et ces actions peuvent être exécutées sur des machines virtuelles macOS ou Windows.
Voici un exemple de script YAML pour les actions GitHub qui exécutent des tests unitaires à chaque poussée de code sur 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
- nom : "Exécuter les tests unitaires"
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]
s'exécute sur : macOS-latest
permissions : write-all
étapes :
- uses : actions/checkout@v3
- name : "Download latest tool4d release and expand"
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
- nom : "Exécuter les tests unitaires du projet"
run : |
./tool4d.app/Contents/MacOS/tool4d --project ${{ github.workspace }}/Project/myProject.4DProject --dataless --skip-onstartup --startup-method "runUnitTests"

Notez que tool4d n’a pas besoin de licence pour fonctionner, il n’est donc pas nécessaire d’enregistrer quoi que ce soit dans les machines virtuelles !

Maintenance

Vous pouvez également utiliser tool4d pour des tâches de maintenance. Par exemple, si vous souhaitez vérifier un fichier de données du serveur 4D et vous assurer qu’aucun utilisateur ne se connecte au serveur. Notez que pour cette utilisation, vous pouvez également utiliser l’application 4D Server avec le paramètre « –utility » : elle exécutera la même séquence de méthodes que tool4d.

Ligne de commande pour ce faire :
/Applications/4D/4D\ Server.app/Contents/MacOS/4D\ Server --utility --project "{pathToProjectFile}" --skip-onstartup --startup-method "verifyDataFile"

La méthode verifyDataFile contient un appel à la commande VERIFY CURRENT DATA FILE.

 

Nous espérons que tool4d vous aidera dans la conception de vos canaux CI/CD et dans d’autres tâches !

Nous nous efforçons constamment de fournir à nos utilisateurs la meilleure expérience possible, et nous vous encourageons à partager vos pensées et vos commentaires sur le forum 4D. Vos commentaires nous aident à mieux comprendre vos besoins et à améliorer continuellement nos produits et services.

Avatar
- Product Owner -Damien Fuzeau a rejoint l'équipe 4D Product en février 2019. En tant que Product Owner, il est en charge de la rédaction des user stories, puis de leur traduction en spécifications fonctionnelles. Son travail consiste également à s'assurer que les implémentations de fonctionnalités livrées répondent aux besoins des clients.Damien est diplômé de l'Université de Nantes en génie logiciel. Il a passé plus de 23 ans dans son ancienne entreprise, d'abord en tant que développeur (découverte de 4D en 1997), puis en tant que responsable de l'ingénierie et architecte logiciel. Cette société est un partenaire OEM de 4D et a déployé des logiciels d'entreprise basés sur 4D pour des milliers d'utilisateurs, sur des centaines de serveurs. Damien est donc habitué au développement et au déploiement 4D dans un contexte multi-langues.