diff --git a/README.md b/README.md index 6bf9771..6c44459 100644 --- a/README.md +++ b/README.md @@ -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: -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: -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 | diff --git a/ci/minecraft-server/test-values.yaml b/ci/minecraft-server/test-values.yaml index 8bd68c3..d8664ba 100644 --- a/ci/minecraft-server/test-values.yaml +++ b/ci/minecraft-server/test-values.yaml @@ -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 diff --git a/minecraft-server/Chart.yaml b/minecraft-server/Chart.yaml index 20623e9..ce8124f 100644 --- a/minecraft-server/Chart.yaml +++ b/minecraft-server/Chart.yaml @@ -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 ("-java") # instead of the rolling line tag ("java"): 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 diff --git a/minecraft-server/templates/NOTES.txt b/minecraft-server/templates/NOTES.txt index efef308..e1b83f6 100644 --- a/minecraft-server/templates/NOTES.txt +++ b/minecraft-server/templates/NOTES.txt @@ -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 }} diff --git a/minecraft-server/values.yaml b/minecraft-server/values.yaml index 73d014c..75a6107 100644 --- a/minecraft-server/values.yaml +++ b/minecraft-server/values.yaml @@ -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