minecraft-server: move to the java25 line (4.1.0+up2026.8.2.java25)

Minecraft 26.2 requires Java 25, so the chart's default minecraft.version can
only be raised on a java25 image. appVersion becomes 2026.8.2-java25 - the same
dated upstream release the java21 line ships, so the only variables that change
are the JVM and the Minecraft version.

The chart version stays at 4.1.0: the Java lines are siblings of one chart
generation, not successors, and are told apart by the +up suffix.

The Java boundaries in the values.yaml / NOTES.txt comments are read off
Mojang's version manifest (javaVersion.majorVersion per release), not
estimated: 1.21.11 is the last release asking for Java 21, every release from
26.1 on asks for Java 25.
This commit is contained in:
jklein committed 2026-09-01 17:30:22 +02:00
1 parent a86eda2bbf
commit bfa72181eb
5 files changed
+24 -17

No files matched your search

+1 -1
View File
@@ -15,7 +15,7 @@ Collection of some self-made helm-charts. Each top-level directory is a standalo
| `homeassistant` | Home Assistant | StatefulSet; the only chart carrying Helm tests (`templates/tests/`) |
| `matrix-synapse` | Matrix Synapse | StatefulSet plus an nginx delegation Deployment/Service |
| `minecraft-router` | itzg/mc-router | Deployment + routing ConfigMap + NodePort Service (TCP only, no ingress); `mappings` is a required value |
| `minecraft-server` | itzg/minecraft-server | StatefulSet + PVC + Service + init-script ConfigMap (no ingress); service type is a value (`ClusterIP` by default, routed via `minecraft-router`). Published once per Java line — the image tag comes from `.Chart.AppVersion`, so the Java line is chosen by picking the chart version, and `minecraft.version` ships a default matching that line. Since chart 2.0.0 the tag is an **immutable dated upstream release** (`appVersion: <release>-java8` / `-java17` / `-java21`, e.g. `2026.8.2-java8`) instead of the continuously rebuilt rolling line tag. Pilot for the strict `values.schema.json` (#68), which is now binding for every chart |
| `minecraft-server` | itzg/minecraft-server | StatefulSet + PVC + Service + init-script ConfigMap (no ingress); service type is a value (`ClusterIP` by default, routed via `minecraft-router`). Published once per Java line — the image tag comes from `.Chart.AppVersion`, so the Java line is chosen by picking the chart version, and `minecraft.version` ships a default matching that line. Since chart 2.0.0 the tag is an **immutable dated upstream release** (`appVersion: <release>-java8` / `-java17` / `-java21` / `-java25`, e.g. `2026.8.2-java8`) instead of the continuously rebuilt rolling line tag. Pilot for the strict `values.schema.json` (#68), which is now binding for every chart |
| `outline` | Outline | StatefulSet, separate DB/Redis secrets |
| `paperless-ngx` | Paperless-ngx | Largest chart: consume CronJob, SMB-connector PV/PVC, pre/post-consumption scripts ConfigMap |
| `patchmon` | PatchMon | Two Deployments (frontend + backend), OIDC secret |
+4 -4
View File
@@ -4,10 +4,10 @@
# minecraft.version is deliberately NOT set here any more. Since chart 1.0.0 the
# chart ships a pinned default that belongs to the Java line it publishes (the
# image tag comes from .Chart.AppVersion, and Java 8 runs Minecraft only up to
# 1.16.5, 1.18-1.20.4 need Java 17, 1.20.5+ need Java 21). Leaving it unset
# means the install-test exercises exactly the default a user would get, so a
# Java line published with a mismatched default version fails CI instead of
# passing on a CI-only override.
# 1.16.5, 1.18-1.20.4 need Java 17, 1.20.5-1.21.11 need Java 21 and 26.1+ needs
# Java 25). Leaving it unset means the install-test exercises exactly the
# default a user would get, so a Java line published with a mismatched default
# version fails CI instead of passing on a CI-only override.
#
# server.service.type is not set either: the default is ClusterIP, which is what
# all three real deployments run (routing is done by the static mappings of the
+5 -4
View File
@@ -6,15 +6,16 @@ icon: https://avatars.githubusercontent.com/u/988985
type: application
# The Java line of this chart version is chosen through appVersion, which is
# the image tag: the chart is published once per line (java8 / java17 / java21)
# and minecraft.version in values.yaml must match the line published here.
# the image tag: the chart is published once per line (java8 / java17 / java21 /
# java25) and minecraft.version in values.yaml must match the line published
# here.
# Since chart 2.0.0 the tag is a DATED upstream release ("<release>-java<N>")
# instead of the rolling line tag ("java<N>"): the rolling tags are rebuilt
# continuously, so a pod restart could pull a different image than the last one
# without anything being recorded anywhere. The dated tags are immutable, so the
# image is now pinned by the chart version like every other chart in this repo.
version: 4.1.0+up2026.8.2.java21
appVersion: "2026.8.2-java21"
version: 4.1.0+up2026.8.2.java25
appVersion: "2026.8.2-java25"
maintainers:
- name: jklein
+7 -5
View File
@@ -81,11 +81,13 @@ THIS CHART IS PUBLISHED ONCE PER JAVA LINE — THIS IS {{ $line | default "an un
({{ .Chart.AppVersion }}), not from a value. This build runs
minecraft.version {{ .Values.minecraft.version }}.
Java 8 runs Minecraft up to 1.16.5, 1.18-1.20.4 need Java 17 and 1.20.5+ need
Java 21. Nothing in this chart checks that minecraft.version fits the line:
a mismatch renders and installs without a word, and only the container fails
afterwards — CrashLoopBackOff once the startup budget{{ if $budget }} ({{ $budget }}){{ end }} is spent, with
the reason in the log and nowhere else:
Java 8 runs Minecraft up to 1.16.5, 1.18-1.20.4 need Java 17, 1.20.5-1.21.11
need Java 21 and 26.1 and later need Java 25 (read off Mojang's version
manifest, javaVersion.majorVersion per release). Nothing in this chart checks
that minecraft.version fits the line: a mismatch renders and installs without
a word, and only the container fails afterwards — CrashLoopBackOff once the
startup budget{{ if $budget }} ({{ $budget }}){{ end }} is spent, with the reason in the log and
nowhere else:
kubectl -n {{ .Release.Namespace }} logs {{ $pod }}
+7 -3
View File
@@ -225,9 +225,13 @@ minecraft:
# drift to a new release on every restart.
# This value must match the Java line of the chart version: the image tag
# comes from .Chart.AppVersion, so the JVM is fixed per published chart
# version. Java 8 runs Minecraft up to 1.16.5, 1.18-1.20.4 need Java 17 and
# 1.20.5+ need Java 21. This chart publishes appVersion "2026.8.2-java21".
version: "1.21.1"
# version. Java 8 runs Minecraft up to 1.16.5, 1.18-1.20.4 need Java 17,
# 1.20.5-1.21.11 need Java 21 and 26.1 and later need Java 25. The two upper
# boundaries are read off Mojang's version manifest (piston-meta, field
# javaVersion.majorVersion per release), not estimated: 1.21.11 (2025-12-09)
# is the last release asking for 21, and every release from 26.1 (2026-03-24)
# on asks for 25. This chart publishes appVersion "2026.8.2-java25".
version: "26.2"
# curseforge, ftb and curseforgeServerpack are mutually exclusive - enabling
# more than one is rejected by the chart (before 1.0.0 it silently rendered a