This guide starts from a fresh internal development workspace. By the end, you’ll have the CLI authenticated, Gradle ready to resolveDocumentation Index
Fetch the complete documentation index at: https://grounds-feat-grounds-runtime-libraries.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
grounds-push, and
a Velocity stack pushed with local plugin-agones and plugin-player builds.
Examples use
~/grounds as the parent directory. Use any directory you prefer,
but keep the app repo and plugin repos under one parent so workspace scans are
predictable.Prerequisites
- A Grounds Account.
- Java 21+.
- A Gradle wrapper in each plugin repository.
- Git access to the internal repositories you work on.
- A GitHub token with
read:packagesfor resolvinggg.grounds.pushfrom GitHub Packages.
1. Create your workspace directory
Keep the app repo and plugin repos under one parent directory:~/grounds/sample-plugin-workspace/app. If you already have an app repo, clone
or move it under the same parent and use that path instead.
2. Install and sign in with the CLI
Install the CLI for your operating system:- macOS / Linux (Homebrew)
- Linux (curl)
- Windows (Scoop)
auth, api, and gradle wrapper when run
from a project root.
3. Configure GitHub Packages for Gradle
Internal Gradle builds resolvegg.grounds.push from GitHub Packages. Export
credentials before running Gradle or grounds push:
4. Check the app manifest
The app manifest should keep shared release sources. Local workspace mappings replace those sources only for your push. Use this canonical sample manifest in~/grounds/sample-plugin-workspace/app/grounds.yaml:
grounds.yaml
5. Understand the release-source push
Plaingrounds push uses the release sources from grounds.yaml:
.jar assets. If a
release has no JAR asset yet, the push fails during source resolution; continue
with local workspace mappings for active development.
When release sources are available, the push flow is:
- The Gradle plugin assembles the configured artifacts and uploads them with the manifest to the Grounds API.
- Forge runs a Kaniko build inside the cluster, pushes the resulting OCI image to the internal registry, and signs it with cosign.
- Forge applies the workload to your personal namespace (
user-<your-handle>). - Once the pod is Ready, the CLI prints the public URL.
6. Add local workspace mappings
Map each manifest plugin ID to the local repository, build command, and artifact that should replace the release source during local override pushes:grounds workspace doctor checks that configured repository paths exist.
7. Push with local plugin overrides
Run a dev push with every enabled workspace mapping applied:The shared
grounds.yaml still points at release sources. --with-local
rewrites enabled workspace entries for this push only.8. Inspect the result
Use the CLI output, Portal, and server logs to confirm the pushed stack is using your local builds. For a shareable preview of the same local override set without replacing your dev deployment, push to staging with--with-local:
preview-<id> namespace with a 7-day TTL. Hostname pattern:
<name>-pr<id>.mc.grnds.io. Grounds garbage-collects the env automatically once
the TTL expires. See Share staging previews for
the full preview workflow, including pinning previews:
Next steps
Local plugin workspaces
Map independent plugin repos into
grounds push --local and --with-local.Multi-plugin stacks
Test Paper, Velocity, or gamemode stacks with multiple plugins in one push.
Debug pushes
Work through local build, upload, Forge build, and deployment failures.
Manifest reference
Check fields, source formats, and workload shapes.
