Add AOT cache for mc-image-helper on Java 25+ (#4341)

This commit is contained in:
Geoff Bourne authored and GitHub committed 2026-10-16 17:18:11 -05:00
1 parent 8f08edec05
commit 4cb8a05f9c
5 files changed
+43

No files matched your search

+5
View File
@@ -49,18 +49,22 @@ jobs:
baseImage: eclipse-temurin:25-jre-noble baseImage: eclipse-temurin:25-jre-noble
platforms: linux/amd64,linux/arm64,linux/riscv64 platforms: linux/amd64,linux/arm64,linux/riscv64
mcVersion: latest mcVersion: latest
enableMcHelperAotWarmup: true
- variant: java25-alpine - variant: java25-alpine
baseImage: eclipse-temurin:25-jre-alpine baseImage: eclipse-temurin:25-jre-alpine
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: latest mcVersion: latest
enableMcHelperAotWarmup: true
- variant: java25-jdk - variant: java25-jdk
baseImage: eclipse-temurin:25 baseImage: eclipse-temurin:25
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: latest mcVersion: latest
enableMcHelperAotWarmup: true
- variant: java25-graalvm - variant: java25-graalvm
baseImage: container-registry.oracle.com/graalvm/jdk:25-ol10 baseImage: container-registry.oracle.com/graalvm/jdk:25-ol10
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: latest mcVersion: latest
enableMcHelperAotWarmup: true
# JAVA 21: # JAVA 21:
- variant: java21 - variant: java21
baseImage: eclipse-temurin:21-jre baseImage: eclipse-temurin:21-jre
@@ -240,6 +244,7 @@ jobs:
REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }} REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
${{ matrix.mcHelperVersion && format('MC_HELPER_VERSION={0}', matrix.mcHelperVersion) }} ${{ matrix.mcHelperVersion && format('MC_HELPER_VERSION={0}', matrix.mcHelperVersion) }}
${{ matrix.knockdRepoOrg && format('KNOCKD_REPO_ORG={0}', matrix.knockdRepoOrg) }} ${{ matrix.knockdRepoOrg && format('KNOCKD_REPO_ORG={0}', matrix.knockdRepoOrg) }}
${{ matrix.enableMcHelperAotWarmup && 'ENABLE_MC_HELPER_AOT_WARMUP=1' || 'ENABLE_MC_HELPER_AOT_WARMUP=0' }}
IMAGE_AUTHOR=${{ env.IMAGE_AUTHOR }} IMAGE_AUTHOR=${{ env.IMAGE_AUTHOR }}
cache-from: type=gha,scope=${{ matrix.variant }} cache-from: type=gha,scope=${{ matrix.variant }}
cache-to: type=gha,mode=max,scope=${{ matrix.variant }} cache-to: type=gha,mode=max,scope=${{ matrix.variant }}
+4
View File
@@ -34,17 +34,20 @@ jobs:
baseImage: eclipse-temurin:25-jre-noble baseImage: eclipse-temurin:25-jre-noble
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: latest mcVersion: latest
enableMcHelperAotWarmup: true
- variant: java25-alpine - variant: java25-alpine
baseImage: eclipse-temurin:25-jre-alpine baseImage: eclipse-temurin:25-jre-alpine
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: latest mcVersion: latest
# For GLIBC_2.34 support (and Alpine) # For GLIBC_2.34 support (and Alpine)
knockdRepoOrg: Metalcape/knock knockdRepoOrg: Metalcape/knock
enableMcHelperAotWarmup: true
- variant: java25-graalvm - variant: java25-graalvm
# stay aligned with build.yml # stay aligned with build.yml
baseImage: container-registry.oracle.com/graalvm/jdk:25-ol10 baseImage: container-registry.oracle.com/graalvm/jdk:25-ol10
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64
mcVersion: latest mcVersion: latest
enableMcHelperAotWarmup: true
# JAVA 17: # JAVA 17:
- variant: java17 - variant: java17
# jammy doesn't work until minecraft updates to https://github.com/netty/netty/issues/12343 # jammy doesn't work until minecraft updates to https://github.com/netty/netty/issues/12343
@@ -107,6 +110,7 @@ jobs:
BASE_IMAGE=${{ matrix.baseImage }} BASE_IMAGE=${{ matrix.baseImage }}
${{ matrix.mcHelperVersion && format('MC_HELPER_VERSION={0}', matrix.mcHelperVersion) }} ${{ matrix.mcHelperVersion && format('MC_HELPER_VERSION={0}', matrix.mcHelperVersion) }}
${{ matrix.knockdRepoOrg && format('KNOCKD_REPO_ORG={0}', matrix.knockdRepoOrg) }} ${{ matrix.knockdRepoOrg && format('KNOCKD_REPO_ORG={0}', matrix.knockdRepoOrg) }}
${{ matrix.enableMcHelperAotWarmup && 'ENABLE_MC_HELPER_AOT_WARMUP=1' || 'ENABLE_MC_HELPER_AOT_WARMUP=0' }}
cache-from: type=gha,scope=${{ matrix.variant }} cache-from: type=gha,scope=${{ matrix.variant }}
- name: Run tests - name: Run tests
+6
View File
@@ -66,6 +66,12 @@ RUN curl -fsSL ${MC_HELPER_BASE_URL}/mc-image-helper-${MC_HELPER_VERSION}.tgz \
&& ln -s /usr/share/mc-image-helper-${MC_HELPER_VERSION}/ /usr/share/mc-image-helper \ && ln -s /usr/share/mc-image-helper-${MC_HELPER_VERSION}/ /usr/share/mc-image-helper \
&& ln -s /usr/share/mc-image-helper/bin/mc-image-helper /usr/bin && ln -s /usr/share/mc-image-helper/bin/mc-image-helper /usr/bin
ENV MC_IMAGE_HELPER_AOT_CACHE=/usr/share/mc-image-helper/cache/aot.cache
ARG ENABLE_MC_HELPER_AOT_WARMUP=0
RUN --mount=target=/build,source=build \
/build/create-aot-cache.sh
VOLUME ["/data"] VOLUME ["/data"]
WORKDIR /data WORKDIR /data
+22
View File
@@ -0,0 +1,22 @@
#!/bin/bash
set -e
if [ "${ENABLE_MC_HELPER_AOT_WARMUP}" = "1" ]; then
echo "Warming mc-image-helper AOT cache at ${MC_IMAGE_HELPER_AOT_CACHE}"
mkdir -p "$(dirname "${MC_IMAGE_HELPER_AOT_CACHE}")"
aot_config=/tmp/mc-image-helper.aotconf
# record config
if ! MC_IMAGE_HELPER_OPTS="-XX:AOTMode=record -XX:AOTConfiguration=${aot_config}" mc-image-helper java-release > /dev/null; then
echo "Failed to record AOT configuration"
exit 1
fi
# create cache
if ! MC_IMAGE_HELPER_OPTS="-XX:AOTMode=create -XX:AOTConfiguration=${aot_config} -XX:AOTCache=${MC_IMAGE_HELPER_AOT_CACHE}" mc-image-helper java-release > /dev/null; then
echo "Failed to create AOT cache"
exit 1
fi
else
echo "Skipping mc-image-helper AOT warmup"
fi
+6
View File
@@ -65,6 +65,12 @@ if isTrue "${DEBUG_MEMORY:-false}"; then
free -m | applyLogPrefix free -m | applyLogPrefix
fi fi
: "${MC_IMAGE_HELPER_AOT_CACHE:=/usr/share/mc-image-helper/cache/aot.cache}"
if (( $(getJavaRelease) >= 25 )) && [ -f "${MC_IMAGE_HELPER_AOT_CACHE}" ]; then
MC_IMAGE_HELPER_OPTS+=" -XX:AOTMode=auto -XX:AOTCache=${MC_IMAGE_HELPER_AOT_CACHE}"
export MC_IMAGE_HELPER_OPTS
fi
########################################## ##########################################
# Setup RCON password # Setup RCON password