Ein Werkzeug für die 4D-Code-Ausführung in CLI

In der Entwicklungsbranche hat sich CI/CD zu einer Standardpraxis entwickelt. Bei jeder Codeänderung werden automatisierte Aktionen wie Testen, Kompilieren, Erstellen, Ausliefern und manchmal auch Bereitstellen durchgeführt, um sicherzustellen, dass der Code von hoher Qualität ist und sich leicht in das bestehende System integrieren lässt.

Diese Aktionen erfordern ein Tool, das den notwendigen Code ausführt. Als 4D Entwickler haben wir beschlossen, ein kostenloses Tool zur Verfügung zu stellen, mit dem Entwickler elementare Aktionen ausführen können. Dieses Tool heißt tool4d und vereinfacht die Ausführung der notwendigen Aktionen innerhalb der 4D Umgebung.

In diesem Artikel werden wir die Funktionalitäten von tool4d erkunden und wie es zur Verbesserung Ihres Entwicklungsprozesses eingesetzt werden kann.

Diese neue Anwendung ist hauptsächlich für die Integration in CI/CD-Pipelines gedacht. Das Hauptziel von tool4d ist es daher, 4D-Code mit einem minimalen Befehlssatz, einem minimalen Speicherbedarf und einer minimalen Größe auszuführen. Die tool4d Anwendung kann als Teilmenge der 4D Anwendung betrachtet werden.

Wie funktioniert sie?

Erstens wird tool4d wie 4D veröffentlicht, d. h. sie haben die gleiche Versions- und Build-Nummer.
Auch wenn tool4d mit seinem Symbol angezeigt wird, kann die Anwendung nur über die Befehlszeilenschnittstelle ausgeführt werden.
Die Ausführung erfolgt immer im Headless-Modus. Zur Rückmeldung von Informationen können Sie den stdout-Stream verwenden, auch unter Windows, wie folgt:

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

Die folgende Abfolge von Methoden wird immer ausgeführt:
1. tool4d führt die Datenbankmethode On Startup aus, außer wenn der Parameter –skip-onstartup definiert ist.
2. tool4d führt die mit dem Parameter –startup-method angegebene Methode aus, falls definiert.
3. tool4d führt die Datenbankmethode On Exit aus, außer wenn der Parameter –skip-onstartup definiert ist.
4. tool4d beendet sich.

Um tool4d so leicht wie möglich zu machen, wurden viele Elemente von 4D deaktiviert, z. B. der Anwendungsserver, der Webserver, der SQL-Server, der Backup-Scheduler usw.
Und zu guter Letzt benötigt tool4d keine Lizenz, um zu laufen.
Weitere Details finden Sie in der Dokumentation.

Wie kann man es bekommen?

Die tool4d-Anwendungen sind auf dem Produkt-Download-Portal für drei Systemziele verfügbar: Windows, macOS Intel und macOS Silicon.
Da tool4d kostenlos ist und in CI/CD-Pipelines verwendet werden kann, können Sie es ohne Authentifizierung unter https://resources-downloads.4d.com mit dem exakten Query-String für Product Downloads beziehen.
Die neuesten v20 LTS-Versionen können zum Beispiel direkt über diese Links heruntergeladen werden:

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

Die Pakete sind mit dem tar.xz-Algorithmus komprimiert, was eine minimale Dateigröße garantiert. Wenn auf Ihrem System keine mit diesem Format kompatible Anwendung installiert ist, können Sie das Paket mit den folgenden Befehlszeilen dekomprimieren.

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

macOS:
tar xvzf {tool4dCompressedFile}

Anwendungsfälle

Es gibt viele Anwendungsfälle für tool4d. Hier sind einige von ihnen, aber Sie können sich auch viele andere Anwendungsfälle vorstellen!

Kompilierung

tool4d ist sehr gut geeignet, um Aufgaben wie Unit-Tests oder Kompilierungen zu erstellen. Hier ist ein Beispiel für ein kleines Projekt namens compileThisProject, das ein anderes Projekt kompiliert.
Das compileThisProject-Projekt erhält einen Projektdateipfad, kompiliert ihn und zeigt dann das Kompilierungsergebnis im Terminal an. Seine Datenbankmethode „On Startup“ enthält diesen 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 

Die auszuführende Befehlszeile:

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

Und hier ist das Ergebnis:

Die Kompilierung beginnt
Die Kompilierung liefert:
{
"Erfolg": true,
"Fehler": []
}

Kontinuierliche Integration

Die Kompilierung ist ein Schritt in CI/CD-Pipelines. Unabhängig von Ihrer CI/CD-Plattform können Sie tool4d für jeden Schritt verwenden!
In diesem Blogbeitrag haben wir bereits über GitHub Actions gesprochen. Dabei handelt es sich um eine GitHub-Plattform, die es Ihnen ermöglicht, bei GitHub-Ereignissen wie dem Pushen von Code oder dem Zusammenführen einer Pull-Anfrage automatisch Aktionen auszuführen. Und diese Aktionen können auf virtuellen Maschinen unter macOS oder Windows ausgeführt werden.
Hier ist ein Beispiel für ein YAML-Skript für GitHub Actions, das Unit Tests bei jedem Code-Push auf GitHub ausführt:

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: "Run Unit Tests"
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
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/mac/tool4d_v20.0_mac_x86.tar.xz -o tool4d.tar.xz -sL  tar xvzf tool4d.tar.xz
- name: "Run Project Unit Tests"
run: |
./tool4d.app/Contents/MacOS/tool4d --project ${{ github.workspace }}/Project/myProject.4DProject --dataless --skip-onstartup --startup-method "runUnitTests"

Beachten Sie, dass tool4d keine Lizenz benötigt, um ausgeführt zu werden. Es ist also nicht notwendig, irgendetwas in den virtuellen Maschinen zu registrieren!

Wartung

Sie können tool4d auch für Wartungsaufgaben verwenden. Zum Beispiel, wenn Sie eine 4D Server Datendatei überprüfen und sicherstellen wollen, dass sich kein Benutzer mit dem Server verbindet. Beachten Sie, dass Sie für diesen Zweck auch die 4D Server Anwendung mit dem Parameter „–utility“ verwenden können: Sie führt die gleiche Abfolge von Methoden aus wie tool4d.

Befehlszeile dazu:
/Applications/4D/4D\ Server.app/Contents/MacOS/4D\ Server --utility --project "{pathToProjectFile}" --skip-onstartup --startup-method "verifyDataFile"

Die Methode verifyDataFile enthält einen Aufruf des Befehls VERIFY CURRENT DATA FILE.

 

Wir hoffen, dass tool4d Ihnen bei der Gestaltung Ihrer CI/CD-Pipeline und anderen Aufgaben helfen wird!

Wir sind ständig bestrebt, unseren Nutzern die bestmögliche Erfahrung zu bieten, und wir ermutigen Sie, Ihre Gedanken und Ihr Feedback im 4D Forum zu teilen. Ihr Feedback hilft uns, Ihre Bedürfnisse besser zu verstehen und unsere Produkte und Dienstleistungen kontinuierlich zu verbessern.

Avatar
- Product Owner - Damien Fuzeau ist seit Februar 2019 Mitglied des 4D Produktteams. Als Product Owner ist er für das Schreiben von User Stories zuständig, die er dann in funktionale Spezifikationen umsetzt. Zu seinen Aufgaben gehört es auch, dafür zu sorgen, dass die gelieferten Funktionsimplementierungen den Anforderungen der Kunden entsprechen. Damien hat an der Universität von Nantes einen Abschluss in Softwaretechnik gemacht. Er verbrachte mehr als 23 Jahre in seinem früheren Unternehmen, zunächst als Entwickler (er entdeckte 4D im Jahr 1997) und später als technischer Leiter und Softwarearchitekt. Dieses Unternehmen ist ein 4D OEM Partner und hat 4D basierte Geschäftssoftware für Tausende von Usern auf Hunderten von Servern eingesetzt. Damien ist also mit der Entwicklung und dem Einsatz von 4D in einem mehrsprachigen Kontext vertraut.