Uno strumento per l’esecuzione di codice 4D in CLI

Tradotto automaticamente da Deepl

Nel settore dello sviluppo, il CI/CD è diventato una pratica standard. Ad ogni modifica del codice, vengono generate azioni automatizzate come il test, la compilazione, la costruzione, la consegna e talvolta il deployment, per garantire che il codice sia di alta qualità e facilmente integrabile nel sistema esistente.

Queste azioni richiedono uno strumento per eseguire il codice necessario. Come sviluppatori di 4D, abbiamo deciso di fornire uno strumento gratuito che permetta agli sviluppatori di eseguire le azioni elementari. Questo strumento si chiama tool4d e semplifica il processo di esecuzione delle azioni necessarie all’interno dell’ambiente 4D.

In questo articolo esploreremo le funzionalità di tool4d e come può essere utilizzato per migliorare il vostro processo di sviluppo.

Questa nuova applicazione è dedicata principalmente all’integrazione nelle pipeline CI/CD. L’obiettivo principale di tool4d è quindi quello di eseguire codice 4D con un set di istruzioni minimo, un ingombro di memoria minimo e una dimensione minima. L’applicazione tool4d può essere vista come un sottoinsieme dell’applicazione 4D.

Come funziona?

Innanzitutto, tool4d viene rilasciato come 4D, quindi condividono la stessa versione e lo stesso numero di build.
Anche se tool4d viene visualizzato con la sua icona, l’applicazione può essere eseguita solo tramite l’interfaccia a riga di comando.
La sua esecuzione avviene sempre in modalità headless. Per restituire informazioni, è possibile utilizzare il flusso stdout, anche su Windows, come segue:

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

Viene sempre eseguita la seguente sequenza di metodi:
1. tool4d esegue il metodo On Startup database, tranne nel caso in cui sia definito il parametro –skip-onstartup.
2. tool4d esegue il metodo designato dal parametro –startup-method, se definito.
3. tool4d esegue il metodo di database On Exit, a meno che non sia stato definito il parametro –skip-onstartup.
4. tool4d esce.

Per rendere tool4d il più leggero possibile, molti elementi di 4D sono stati disabilitati, come il server delle applicazioni, il server Web, SQL Server, lo schedulatore di backup e così via.
Infine, tool4d non ha bisogno di alcuna licenza per funzionare.
Potete trovare maggiori dettagli nella documentazione.

Come ottenerlo?

Le applicazioni di tool4d sono disponibili sul portale Product Download per tre sistemi: Windows, macOS Intel e macOS Silicon.
Poiché tool4d è gratuito e può essere utilizzato nelle pipeline CI/CD, è possibile ottenerlo senza autenticazione all’indirizzo https://resources-downloads.4d.com con la query string esatta per Product Download.
Ad esempio, le ultime versioni v20 LTS possono essere scaricate direttamente con questi link:

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

I pacchetti sono compressi con l’algoritmo tar.xz, garantendo una dimensione minima dei file. Se nel sistema non è installata alcuna applicazione compatibile con questo formato, è possibile decomprimere il pacchetto utilizzando le seguenti righe di comando.

Windows:
tar xvzf {tool4dCompressedFile} -C {cartella di destinazione}

macOS:
tar xvzf {tool4dCompressedFile}

Casi d’uso

I casi d’uso di tool4d sono numerosi. Eccone alcuni, ma vi lasciamo immaginare molti altri casi d’uso!

Compilazione

tool4d è molto adatto per la creazione di attività come test unitari o compilazioni. Ecco un esempio di un piccolo progetto chiamato compileThisProject che compila un altro progetto.
Il progetto compileThisProject riceve il percorso di un file di progetto, lo compila e poi visualizza il risultato della compilazione nel terminale. Il suo metodo di database “On Startup” contiene questo codice:

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 riga di comando da eseguire:

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

Ecco il risultato:

La compilazione inizia
La compilazione restituisce:
{
"success": true,
"errors": []
}

Integrazione continua

La compilazione è una fase delle pipeline CI/CD. Qualunque sia la vostra piattaforma CI/CD, potete usare tool4d per ogni fase!
Abbiamo già parlato di GitHub Actions in questo post. Si tratta di una piattaforma GitHub che consente di eseguire automaticamente azioni su eventi GitHub come il push di codice o l’unione di una richiesta di pull. Queste azioni possono essere eseguite su macchine virtuali macOS o Windows.
Ecco un esempio di script YAML per le azioni GitHub che eseguono test unitari su ogni push di codice su 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
- nome: "Eseguire i test unitari"
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]
runs-on: macOS-latest
permessi: write-all
passi:
- 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
- nome: "Eseguire i test unitari del progetto"
run: |
./tool4d.app/Contents/MacOS/tool4d --project ${{ github.workspace }}/Project/myProject.4DProject --dataless --skip-onstartup --startup-method "runUnitTests"

Si noti che tool4d non ha bisogno di licenze per funzionare, quindi non c’è bisogno di registrare nulla nelle macchine virtuali!

Manutenzione

È possibile utilizzare tool4d anche per attività di manutenzione. Ad esempio, se si desidera verificare un file di dati del server 4D e assicurarsi che nessun utente si connetta al server. Si noti che per questo uso è possibile utilizzare anche l’applicazione 4D Server con il parametro “–utility”: eseguirà la stessa sequenza di metodi di tool4d.

Linea di comando per farlo:
/Applications/4D/4D\ Server.app/Contents/MacOS/4D\ Server --utility --project "{pathToProjectFile}" --skip-onstartup --startup-method "verifyDataFile"

Il metodo verifyDataFile contiene una chiamata al comando VERIFY CURRENT DATA FILE.

 

Spero che tool4d vi aiuti nella progettazione della pipeline CI/CD e in altri compiti!

Ci impegniamo costantemente per fornire ai nostri utenti la migliore esperienza possibile e vi invitiamo a condividere i vostri pensieri e feedback sul forum di 4D. Il vostro feedback ci aiuta a comprendere meglio le vostre esigenze e a migliorare continuamente i nostri prodotti e servizi.

Avatar
- Product Owner -Damien Fuzeau è entrato a far parte del team 4D Product nel febbraio 2019. In qualità di Product Owner, si occupa di scrivere le storie degli utenti e di tradurle in specifiche funzionali. Il suo lavoro consiste anche nell'assicurarsi che le implementazioni delle funzionalità fornite soddisfino le esigenze dei clienti.Damien si è laureato all'Università di Nantes in ingegneria del software. Ha trascorso più di 23 anni nella sua precedente azienda, prima come sviluppatore (scoprendo 4D nel 1997), poi come responsabile dell'ingegneria e architetto software. Questa azienda è un partner OEM di 4D e ha distribuito software aziendali basati su 4D per migliaia di utenti, su centinaia di server. Damien è quindi abituato allo sviluppo e alla distribuzione di 4D in un contesto multilingue.