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

Why the change

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

Special things to note

  • Kept to what is specific to Docker, so it needs no upkeep when the build changes: the image follows the latest Maven 3 / Java 21 image, and the README runs the build commands from AGENTS.md instead of copying them.
  • Adds the 64bit_linux_aarch64 Maven profile (osgi.os=linux, osgi.ws=gtk, osgi.arch=aarch64), which Tycho needs to resolve SWT on Linux ARM64.
  • unzip is installed because ./mvnw otherwise downloads the .tar.gz distribution, which doesn't match the wrapper's checksum.
  • No CI workflow uses the image; it is for local and ad-hoc builds.
  • Checked with the full CI build from AGENTS.md in the container on native ARM64 (Apple Silicon): all tests pass, and Checkstyle, PMD, CPD and SpotBugs are clean.

Change outline

 ddk-parent/pom.xml     # + 64bit_linux_aarch64 profile
+docker/Dockerfile      # maven:3-eclipse-temurin-21-noble + GTK 3, librsvg, libXtst, unzip, Xvfb
+docker/README.md       # build the image, run an AGENTS.md command in it, caveats

🤖 Generated with Claude Code

@joaodinissf
joaodinissf force-pushed the wip/docker-build-env branch from cccf372 to 69c6ead Compare August 26, 2026 13:23
@joaodinissf
joaodinissf marked this pull request as ready for review August 26, 2026 13:38
@joaodinissf
joaodinissf enabled auto-merge (rebase) August 26, 2026 13:43
@joaodinissf joaodinissf changed the title ci: add reusable headless Docker build environment build: add reusable headless Docker build environment Sep 22, 2026
joaodinissf and others added 2 commits October 25, 2026 07:43
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>
Adds a small Linux image with Java 21, Maven, GTK 3 and Xvfb, so the full
build and the UI tests run headlessly on any machine with Docker, on
x86-64 or ARM64.

It holds only what is specific to Docker, so it needs no upkeep when the
build changes: the base image follows the latest Maven 3 / Java 21 image,
and the README runs the build commands from AGENTS.md instead of copying
them. unzip is installed because ./mvnw otherwise downloads the .tar.gz
distribution, which doesn't match the wrapper's checksum.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

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