Clone
7
Developer Guide
Patrick Gniza edited this page 2026-08-21 09:04:39 +02:00

Deutsch | English

Developer Guide

This page describes the internal project structure and development workflow.


Main Project Directories

romexis-common/
  Shared Java agent, patches and native helper sources.

romexis-base/
  Shared Romexis Server runtime image.

romexis-gui-runtime/
  Shared GUI runtime for Romexis Admin and Client.

romexis-payload/
  Windows installer payload extraction for Server/Admin/mRomexis.

romexis-client-payload/
  Version-specific Romexis Client payload image.

romexis-firebird-payload/
  macOS Firebird SQL payload extraction.

romexis/
  Final Romexis Server image.

romexis-admin/
  Final Romexis Admin image.

romexis-client/
  Final standalone Romexis Client image.

romexis-mromexis-app/
  Final mRomexis Web App image.

romexis-control-agent/
  Restricted container control API.

migration-service/
  Migration Web UI, REST API, SFTP and restore orchestration.

migration-client/
  Source-side migration helper client.

scripts/
  Local and CI build helpers.

docs/
  Extended markdown documentation.

Development Principles

  • Keep proprietary binaries out of Git.
  • Keep version-specific installer extraction in payload images.
  • Keep expensive architecture-specific dependencies in shared runtime images.
  • Keep common agent, patch and native helper sources in romexis-common/.
  • Keep final Server, Admin and Client images focused on assembly and runtime logic.
  • Keep Romexis Admin and Romexis Client as independent final images based on the same GUI runtime.
  • Keep MSSQL and Firebird initialization separated.
  • Use the wrapper script only for backend routing.
  • Prefer explicit validation over silent incomplete images.

Build Dependency Model

The build is intentionally split into three layers:

  1. Payload images contain version-specific Romexis installer content.
  2. Runtime images contain reusable architecture-specific operating-system and library dependencies.
  3. Final images assemble payload and runtime content together with the component-specific scripts.

This keeps large installer extraction and expensive runtime preparation reusable across Server, Admin and Client builds. Build-only payload and runtime images are not additional runtime services in Docker Compose.

For local development use scripts/build-local.sh or scripts/build-local.ps1. Drone uses the same dependency model with immutable commit-specific staging tags and registry-backed BuildKit caches.


Database Init Scripts

init-romexis-db.sh
  Routes to backend-specific init script.

init-romexis-mssql-db.sh
  Handles SQL Server initialization.

init-romexis-firebird-db.sh
  Handles Firebird initialization.

Version-Aware Database Updates

The database init scripts use an explicit Romexis update order.

This is required because markers do not sort numerically.

Example:

600, 610, 63, 64, 651, 652, 653

The script resolves the target marker from /opt/romexis/version and runs updates until that marker.


Testing Image Contents

docker run --rm --entrypoint find \
  gitea.buchhorster.de/planmeca/romexis-server:<tag> \
  /opt -maxdepth 3 -type f | sort

Open shell:

docker run --rm -it --entrypoint bash \
  gitea.buchhorster.de/planmeca/romexis-server:<tag>

Local Debug Compose Override

services:
  romexis:
    entrypoint:
      - /bin/bash
      - -c
      - sleep infinity
    stdin_open: true
    tty: true

Then:

docker compose exec romexis bash