feat: add grounds-velocity, plugin-velocity-jar, grounds-gamemode charts#32
Merged
feat: add grounds-velocity, plugin-velocity-jar, grounds-gamemode charts#32
Conversation
Three Helm charts the platform-test environment's PlatformBundle
references but that didn't exist yet — without them the forge
bundle deploy fails with "chart not found" on every component
except the existing grounds-service.
- plugin-velocity-jar: Tiny pod that hosts a single Velocity plugin
JAR over HTTP at /plugin.jar. Init-container `cp`s the JAR from
the plugin image into a shared emptyDir; main container runs
busybox httpd. The plugin image only needs to ship the JAR at
a known path — no httpd/entrypoint requirements. DevSpace can
sync new builds directly into /shared/plugin.jar to hot-swap.
- grounds-velocity: Velocity proxy with one fetch init-container
per entry in `.plugins[]`. Each init-container curls
http://<plugin-name>:8080/plugin.jar into /app/plugins/<name>.jar
before Velocity starts. Pulls VELOCITY_FORWARDING_SECRET from
the existing velocity-forwarding-secret Secret (provisioned
out-of-band). Plugin set is data, not code — engineers control
composition via overrides, not by rebuilding a velocity image.
- grounds-gamemode: Toggles between Deployment+Service and Agones
Fleet based on `.agones.enabled`. Deployment-mode for
minestom-lobby (single replica, fixed port). Fleet-mode for
paper-game (autoscaled, dynamic ports). `.kind` selects which
velocity-secret env var the container expects:
lobby → GROUNDS_LOBBY_VELOCITY_SECRET
paper/match/game → PAPER_VELOCITY_SECRET
Wires the three new charts into the CI lint/template/package matrix,
the release publish matrix, and release-please config + manifest at
0.0.0 baseline.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
49e87de to
f50825e
Compare
…can sync JARs in-place The jar-sync-pod-restart workflow needs to sync a freshly-built JAR into the running plugin pod's /shared/plugin.jar. With readOnly the sync would fail. RW is fine — the only writer is DevSpace's sync target during dev iteration; the init-container's cp still works either way. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0021a2e to
ea0aa7a
Compare
Merged
5 tasks
There was a problem hiding this comment.
Pull request overview
Adds three missing Helm charts used by the platform-test PlatformBundle so bundle deployments don’t fail with “chart not found”, and wires them into CI/release automation.
Changes:
- Introduce new charts:
plugin-velocity-jar(serve a plugin JAR over HTTP),grounds-velocity(Velocity proxy that fetches plugin JARs via init-containers), andgrounds-gamemode(Deployment vs Agones Fleet switch). - Register the new charts in release-please config/manifest for independent versioning.
- Extend CI and release workflow matrices to lint/package/publish the new charts.
Reviewed changes
Copilot reviewed 18 out of 21 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| release-please-config.json | Adds release-please package entries for the three new charts. |
| .release-please-manifest.json | Initializes manifest entries for first releases of the three new charts. |
| .github/workflows/ci.yml | Includes new charts in the CI matrix. |
| .github/workflows/release.yml | Includes new charts in the release/publish matrix. |
| charts/plugin-velocity-jar/Chart.yaml | New chart definition for hosting a single plugin JAR over HTTP. |
| charts/plugin-velocity-jar/Chart.lock | Locks common dependency for the new chart. |
| charts/plugin-velocity-jar/values.yaml | Default configuration and operational notes for JAR hosting. |
| charts/plugin-velocity-jar/templates/deployment.yaml | Deployment with initContainer copying JAR into an emptyDir served by httpd. |
| charts/plugin-velocity-jar/templates/service.yaml | Service exposing the HTTP endpoint for JAR download. |
| charts/grounds-velocity/Chart.yaml | New chart definition for Velocity proxy with plugin fetching. |
| charts/grounds-velocity/Chart.lock | Locks common dependency for the new chart. |
| charts/grounds-velocity/values.yaml | Default config including plugin list and forwarding secret reference. |
| charts/grounds-velocity/templates/deployment.yaml | Deployment that fetches plugin JARs into /app/plugins via init-containers. |
| charts/grounds-velocity/templates/service.yaml | Service exposing the Minecraft proxy port. |
| charts/grounds-gamemode/Chart.yaml | New chart definition for gamemode server with Deployment/Fleet switch. |
| charts/grounds-gamemode/Chart.lock | Locks common dependency for the new chart. |
| charts/grounds-gamemode/values.yaml | Default config for kind, agones toggles, resources, and forwarding secret. |
| charts/grounds-gamemode/templates/_helpers.tpl | Helper templates for image resolution and kind-based env injection. |
| charts/grounds-gamemode/templates/deployment.yaml | Deployment mode rendering for non-Agones operation. |
| charts/grounds-gamemode/templates/service.yaml | Service for Deployment mode (disabled in Agones mode). |
| charts/grounds-gamemode/templates/fleet.yaml | Fleet mode rendering for Agones operation. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
- Render Velocity initContainers only when plugins are configured - Clarify current Agones Fleet replica behavior in gamemode values - Remove unsupported Velocity metrics port wording - Ignore local AI tool metadata
lusu007
approved these changes
May 3, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Three Helm charts the platform-test environment's PlatformBundle references but that didn't exist yet. Without them the forge bundle deploy fails with "chart not found" on every component except the existing grounds-service.
cps JAR from plugin image into emptyDir; main container isbusybox httpd. Plugin image only needs to ship the JAR at a known path — no entrypoint/httpd requirements..plugins[]. Each curlshttp://<plugin-name>:8080/plugin.jarinto/app/plugins/<name>.jarbefore Velocity starts..agones.enabled..kind(lobby/paper/…) picks which velocity-secret env var the container expects.Why option 3 (HTTP fetch) and not init-containers in the velocity pod
Each plugin needs to be an independent first-class workload so engineers can swap/rebuild a single plugin without restarting the whole stack. With init-containers in the velocity pod, DevSpace would have to patch the velocity Deployment to iterate plugin-social. With per-plugin pods, plugin-social has its own pod that DevSpace can sync the JAR into and restart on its own.
Wires
.github/workflows/ci.yml).github/workflows/release.yml)0.0.0)Test plan
helm lintclean for all three (default values + agones-mode toggle)helm templaterenders without errors in both gamemode modesgrounds-velocity-v0.1.0,plugin-velocity-jar-v0.1.0,grounds-gamemode-v0.1.0🤖 Generated with Claude Code