Documentation 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 invokes under the hood. Run it directly when you don’t have the CLI on your machine, or from CI.
What it does
- Validate — parses
grounds.yaml, checks required fields, and verifies thatbaseImageis a source key allowed for the selected workload type. - Resolve JAR — uses the
jarFileextension property, or auto-detectedshadowJar/jaroutput. Builds it if needed (this taskdependsOnthe JAR task). - Upload — multipart POST of the JAR + manifest to
<apiUrl>/v1/pushes. Returns a push ID. - Stream — opens an SSE connection to
<apiUrl>/v1/pushes/<id>/logsand tails until terminal status. - Exit — fails the build (non-zero exit) on
build_failedordeploy_failed. Logs the public URL onready.
Flags
| Flag | Purpose |
|---|---|
--target=<dev|staging> | Override the manifest’s target. Highest precedence. |
--force | Skip forge’s content-hash dedup and force a fresh build. Use after a base image catalog promotion when the manifest and JAR bytes did not change, or when you want to re-observe the build flow. |
groundsPush extension or grounds.yaml.
Multi-plugin bundles
Whengrounds.yaml contains plugins:, groundsPush resolves every source,
packs the resolved JARs into a tar.gz bundle, and uploads that bundle as the
artifact. Forge unpacks it into /app/plugins/ in manifest order.
grounds.yaml
grounds push --local ... or grounds push --with-local, the CLI
resolves local workspace artifacts before Gradle starts and passes those
resolved sources to groundsPush. The shared manifest still contains release
sources; local filesystem paths stay in the CLI workspace config.
Bundle uploads are capped at 100 MB. Keep dependency JARs out of the plugin
artifact when the runtime already provides them.
Output
grounds push, the CLI re-rendres these messages with colour and progress indicators. As a raw Gradle task it’s plaintext.
Failure handling
The build fails on:- Manifest parse error (caught locally before upload).
- Upload error (network, 4xx from forge, file not found).
- Terminal
build_failedordeploy_failedfrom the SSE stream. - Connection lost for longer than
timeoutMinutes(default 5). - Whitelist warning when
failOnWhitelistError = true(the default).
GradleException with the diagnostic from forge. For build/deploy failures, the message includes the push ID so you can re-run with groundsPushRetry or fetch logs separately.
Inputs / outputs (Gradle terms)
| Property | Type | Default |
|---|---|---|
manifestFile | RegularFileProperty (input) | <projectDir>/grounds.yaml |
jarFile | RegularFileProperty (input) | auto from shadowJar / jar |
apiUrl | Property<String> (input) | from credentials, else https://platform.grnds.io |
target | Property<String> (input) | dev |
timeoutMinutes | Property<Int> | 5 |
connectTimeoutSeconds | Property<Int> | 20 |
failOnWhitelistError | Property<Boolean> | true |
Calling from CI
.github/workflows/push.yml
GROUNDS_TOKEN should be a service-account token scoped to the project. Don’t use a personal user token — it has too-broad permissions and can’t be rotated independently.