Clone
3
Build System.de
Patrick Gniza edited this page 2026-08-22 15:46:50 +02:00

Deutsch | English

Build-System

Das Build-System ist in unabhängige Schichten und Service-Images aufgeteilt.

romexis-payload ----------------+--> romexis-server
                                +--> romexis-admin
                                +--> romexis-mromexis-app

romexis-client-payload ------------> romexis-client

romexis-base-jre ------------------> romexis-server

romexis-gui-runtime -----------+--> romexis-admin
                               +--> romexis-client

romexis-firebird-payload ----------> romexis-server

romexis-common -> server/gui runtime build sources

Build-Komponenten

Payload-Build

Der Payload-Build extrahiert den offiziellen Romexis-Windows-Installer.

Er erzeugt:

/opt/romexis
/opt/romexis-mssql-db
/opt/romexis/version

Er stellt außerdem Dateien bereit, die von anderen Service-Images verwendet werden, einschließlich Admin-Dateien und, sofern verfügbar, der WAR-Datei der mRomexis Web App.

Client-Payload-Build

Das Client-Payload wird aus demselben Windows-Installer mit einer separaten Copy-Map extrahiert. Es erzeugt die für das eigenständige Image romexis-client benötigten Dateien und wird als romexis-client-payload:<version> versioniert.

Firebird-Payload-Build

Der Firebird-Payload-Build extrahiert das Datenbankpaket des macOS-Installers.

Er erzeugt:

/opt/romexis-firebird-db
/opt/romexis-firebird-db/scripts
/opt/romexis-firebird-db/tools
/opt/romexis-firebird-db/templates

Server-Runtime-Build

romexis-base-jre stellt wiederverwendbare Server-Runtime-Abhängigkeiten bereit:

  • Java 11
  • JavaFX/OpenJFX
  • SQL-Server-Werkzeuge
  • Firebird-Clientbibliotheken und -Werkzeuge
  • Betriebssystemabhängigkeiten
  • Chilkat
  • Java Property Agent mit eingebetteten RxCr2- und RomexisOptionPaneUI-Runtime-Patches

GUI-Runtime-Build

romexis-gui-runtime enthält den von Admin und Client gemeinsam verwendeten architekturspezifischen Grafik-Stack: Java 17/OpenJFX, X11/noVNC, Mesa/GTK, Chilkat, PropertyAgent mit Java-17-OptionPane-Null-Guard und die DxService-Kompatibilitätsbibliothek.

Gemeinsame Runtime-Quellen

romexis-common/ ist der zentrale Quellort für RomexisPropertyAgent.java, RomexisOptionPaneUIPatch.java, den RxCr2-Ersatz und dxservice_dummy.c. Der Agent-Build bettet ASM und beide gezielten Runtime-Patches in RomexisPropertyAgent.jar ein. Diese Quellen werden in die passenden Runtime-Images kompiliert, statt in Verzeichnissen finaler Images dupliziert zu werden.

Server-Image-Build

Das finale Server-Image importiert:

  • /opt/romexis aus romexis-payload
  • /opt/romexis-mssql-db aus romexis-payload
  • /opt/romexis-firebird-db aus romexis-firebird-payload
  • die Server-Runtime aus romexis-base-jre
  • Runtime-Hilfsskripte

Admin-Image-Build

Das Admin-Image importiert die Romexis-Admin-Dateien aus der Payload und kombiniert sie mit der gemeinsamen browserzugänglichen romexis-gui-runtime.

Wichtige Runtime-Komponenten:

Xvfb
Openbox
xcompmgr
x11vnc
noVNC/websockify
JavaFX

Client-Image-Build

Das finale Client-Image kombiniert romexis-client-payload mit romexis-gui-runtime und Client-spezifischen Start-/Testskripten. Es erbt nicht mehr vom Admin-Image.

Build der mRomexis Web App

Das Image der mRomexis Web App kopiert:

/opt/romexis/broker/mromexis-html.war

aus der Romexis-Payload nach Tomcat als:

/usr/local/tomcat/webapps/ROOT.war

Dies ist nur mit Romexis 6.5.3 und neuer möglich.


Lokale Build-Skripte

Lokale Builds werden ausgeführt über:

scripts/build-local.sh
scripts/build-local.ps1

Linux/macOS:

chmod +x scripts/build-local.sh
./scripts/build-local.sh all

Windows PowerShell:

.\scripts\build-local.ps1 -Targets all

Einzelne Image-Gruppen bauen:

./scripts/build-local.sh server-runtime server
./scripts/build-local.sh gui-runtime admin client
./scripts/build-local.sh migration control

Beispiele für manuelle Builds

Die Hilfsskripte sind der unterstützte manuelle Einstiegspunkt, weil sie die benötigten Runtime-/Payload-Abhängigkeitskontexte konsistent erzeugen.

Wiederverwendbare Runtimes bauen:

./scripts/build-local.sh server-runtime gui-runtime

Payloads explizit bauen:

./scripts/build-local.sh payload client-payload firebird-payload

Finale Anwendungs-Images bauen:

./scripts/build-local.sh server admin client mromexis

Für Windows PowerShell stehen dieselben Targets bereit:

.\scripts\build-local.ps1 -Targets server-runtime,gui-runtime,server,admin,client

Beziehung zur Runtime-Compose-Konfiguration

Die Runtime-Compose-Dateien verwenden Multi-Architektur-Manifest-Tags anstelle architekturspezifischer Tags.

Feature-Branches verwenden IMAGE_SUFFIX:

IMAGE_SUFFIX=-feature-romexis-admin

Die Image-Referenzen der Runtime-Compose-Konfiguration werden damit in Branch-spezifische Manifeste aufgelöst.


Bereinigung des Docker-Caches

Buildx-Cache:

docker buildx prune -a -f

Builder-Cache:

docker builder prune -a -f

Systembereinigung:

docker system prune -a -f

Verwende --volumes nur, wenn nicht verwendete Datenbank-/Anwendungs-Volumes absichtlich entfernt werden sollen.