Skip to content

feat: add grounds-velocity, plugin-velocity-jar, grounds-gamemode charts#32

Merged
lusu007 merged 4 commits intomainfrom
feat/platform-test-charts
May 3, 2026
Merged

feat: add grounds-velocity, plugin-velocity-jar, grounds-gamemode charts#32
lusu007 merged 4 commits intomainfrom
feat/platform-test-charts

Conversation

@hbrombeer
Copy link
Copy Markdown
Member

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.

  • plugin-velocity-jar — pod that hosts a single Velocity plugin JAR over HTTP. Init-container cps JAR from plugin image into emptyDir; main container is busybox httpd. Plugin image only needs to ship the JAR at a known path — no entrypoint/httpd requirements.
  • grounds-velocity — Velocity proxy with one fetch-init-container per entry in .plugins[]. Each curls http://<plugin-name>:8080/plugin.jar into /app/plugins/<name>.jar before Velocity starts.
  • grounds-gamemode — toggles Deployment+Service ↔ Agones Fleet based on .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

  • CI lint/template/package matrix (.github/workflows/ci.yml)
  • Release publish matrix (.github/workflows/release.yml)
  • release-please-config.json + manifest (baseline 0.0.0)

Test plan

  • helm lint clean for all three (default values + agones-mode toggle)
  • helm template renders without errors in both gamemode modes
  • CI green
  • Merge → first releases tagged grounds-velocity-v0.1.0, plugin-velocity-jar-v0.1.0, grounds-gamemode-v0.1.0
  • Live integration once we have real plugin images + paper-game image to test against

🤖 Generated with Claude Code

@hbrombeer hbrombeer closed this May 3, 2026
@hbrombeer hbrombeer reopened this May 3, 2026
hbrombeer and others added 2 commits May 3, 2026 20:33
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>
@hbrombeer hbrombeer force-pushed the feat/platform-test-charts branch from 49e87de to f50825e Compare May 3, 2026 18:33
…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>
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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), and grounds-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.

Comment thread charts/grounds-velocity/templates/deployment.yaml
Comment thread charts/grounds-gamemode/templates/_helpers.tpl
Comment thread charts/grounds-gamemode/values.yaml
Comment thread charts/grounds-velocity/values.yaml Outdated
- 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 lusu007 merged commit 00a4348 into main May 3, 2026
9 checks passed
@lusu007 lusu007 deleted the feat/platform-test-charts branch May 3, 2026 22:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants