Skip to content

build: add reusable headless Docker build environment - #1475

Open
joaodinissf wants to merge 2 commits into
dsldevkit:masterfrom
joaodinissf:wip/docker-build-env
Open

joaodinissf wants to merge 2 commits into
dsldevkit:masterfrom
joaodinissf:wip/docker-build-env

Conversation

@joaodinissf

@joaodinissf joaodinissf commented Jul 19, 2026 •

Copy link
Copy Markdown
Collaborator

Supersedes #1501

Why the change

DSL DevKit can now be built and tested headlessly in a Linux container, on x86-64 or ARM64, without installing Eclipse, GTK or Xvfb on the host.

Special things to note

  • Adds the 64bit_linux_aarch64 Maven profile (osgi.os=linux, osgi.ws=gtk, osgi.arch=aarch64), which Tycho needs on Linux ARM64. It comes from build: add Tycho environment profile for linux/aarch64 #1501.
  • No CI workflow uses the image yet; it is for local and ad-hoc builds.
  • Under ARM64 emulation the test run takes about 1 h 35 min, longer than the 1,800 s test.timeout, so the documented ARM command raises it to 7,200 s.

Change outline

 ddk-parent/pom.xml     # + 64bit_linux_aarch64 profile
+docker/Dockerfile      # Maven 3.9.16 / Temurin 21 (Ubuntu Noble) + GTK 3, librsvg2-common, libxtst6, Xvfb; MAVEN_IMAGE build arg
+docker/README.md       # usage on Windows, Linux, macOS and ARM64; Maven/p2 caches, worktrees, registry mirrors, TLS-intercepting networks

Checked with the full CI-equivalent build in the container on x86-64 and under ARM64 emulation: 333 tests, 0 failures, 2 skipped, and Checkstyle, PMD, CPD and SpotBugs clean.

🤖 Generated with Claude Code

Add a Maven profile activated on linux/aarch64 that sets osgi.os=linux,
osgi.ws=gtk, osgi.arch=aarch64. Without it, Tycho falls back to the pom's
default win32 target environment on arm64 Linux and builds an unlaunchable
test runtime (NoClassDefFoundError: org.eclipse.swt.SWTError, exit code 13),
so SWT/UI tests cannot run in an arm64 container.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add docker/Dockerfile (Maven + Temurin 21 base plus Xvfb and the GTK/X11
libraries Eclipse SWT and AWT require) and a README documenting how to run
the full verify suite headlessly in a container. Runs --init so xvfb-run is
not PID 1, and mounts a persistent .m2 volume to cache p2/Maven downloads
between runs.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@joaodinissf joaodinissf changed the title ci: add reusable headless Docker build environment build: add reusable headless Docker build environment Sep 22, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant