๐ท (ci): Build the JVM image multi-arch for amd64 and arm64
Changes
3 files changed, +19 -4
MODIFY
.github/workflows/jvm.yml
+12 -0
@@ -41,6 +41,15 @@
41
41
registry: ghcr.io
42
42
username: ${{ github.actor }}
43
43
password: ${{ secrets.GITHUB_TOKEN }}
44
+ # QEMU + Buildx enable cross-building the arm64 variant on the amd64 runner.
45
+ # The JVM image only copies the (architecture-independent) quarkus-app jars, so no
46
+ # per-architecture compilation is needed; the multi-arch base image does the rest.
47
+ - name: Set up QEMU
48
+ uses: docker/setup-qemu-action@v3
49
+ with:
50
+ platforms: arm64
51
+ - name: Set up Docker Buildx
52
+ uses: docker/setup-buildx-action@v3
44
53
- name: Extract image metadata
45
54
id: meta
46
55
uses: docker/metadata-action@v6
@@ -54,6 +63,9 @@
54
63
with:
55
64
context: .
56
65
file: src/main/docker/Dockerfile.jvm
66
+ platforms: linux/amd64,linux/arm64
57
67
push: true
58
68
tags: ${{ steps.meta.outputs.tags }}
59
69
labels: ${{ steps.meta.outputs.labels }}
70
+ cache-from: type=gha
71
+ cache-to: type=gha,mode=max
MODIFY
README.md
+2 -4
@@ -214,8 +214,6 @@
214
214
## CI
215
215
216
216
- `.github/workflows/jvm.yml` โ JVM tests on every push/PR; on main, builds and pushes the
217
- JVM container image to GHCR.
217
+ JVM container image to GHCR as a multi-arch manifest (linux/amd64 + linux/arm64, via
218
+ Buildx/QEMU).
218
219
- `.github/workflows/native.yml` โ native build + integration tests on every push/PR.
219
-- `.github/workflows/mirror.yml` โ mirrors all branches and tags to
220
- `https://gitshark.ha1nz.de/git/miggi/GitShark.git` on every push to `main` (force + prune;
221
- auth via `GITSHARK_TOKEN` repository secret holding a GitShark access token).
MODIFY
docs/admins/getting-started.md
+5 -0
@@ -39,6 +39,11 @@
39
39
Pin a specific release instead of `latest` for reproducible deploys (e.g.
40
40
`ghcr.io/workaround-org/git-shark:1.0.0`).
41
41
42
+The JVM image is published as a multi-arch manifest for **linux/amd64** and
43
+**linux/arm64** โ `docker pull` picks the right variant automatically, so it runs
44
+natively on x86 servers and ARM hosts (Raspberry Pi 4/5, AWS Graviton, Apple
45
+Silicon) alike.
46
+
42
47
The image listens on **8080** (HTTP) and, once configured, **2222** (SSH). It runs as
43
48
UID `185` and reads all production settings from environment variables.
44
49