Yeeted

HOSTING FOR AI-BUILT APPS

Deploy a Java app built by Gradle on Yeeted

A small slug API in Java 21 on the JDK's own HTTP server, built by Gradle from build.gradle with no Dockerfile. Yeeted detects build.gradle, runs gradle build -x test in a Gradle 8 image, copies the jar from build/libs/ into a Java 21 runtime image, and starts it with java -jar.

The source is identical to the Maven twin apart from its name, so a difference between the two deployments is the build tool, not the app. JUnit is the sole dependency, at test scope; the deployed build skips the tests and never resolves it.

Tests: gradle test (JUnit 5 on the slug rules, query parsing and JSON escaping) · ./smoke.sh https://... against a deployment.

Run locally

Use JDK 21 and Gradle 8. The project carries no Gradle wrapper, because the deployed build uses the image's own Gradle. From java/slug-gradle:

gradle test
gradle build
PORT=8080 java -jar build/libs/slug-gradle-1.0.0.jar

Open http://localhost:8080, or call the API directly:

curl 'http://localhost:8080/api/slug?text=Cr%C3%A8me%20Br%C3%BBl%C3%A9e'

Deploy and verify

Follow the deployment walkthrough. Deploy this folder, build.gradle, settings.gradle, src/ and yeeted.yaml, with no database and no Dockerfile. Do not upload build/ or .gradle/; the build runs on Yeeted. The manifest selects port 8080 and /healthz.

sh smoke.sh "$PREVIEW_URL"

The script checks the health endpoint, the page, two slugs (one with accents), and that a blank request is refused with 400.

What to change before real use

The generated image copies build/libs/*.jar, so the build must produce exactly one jar there. The plain java plugin does; the Spring Boot plugin also writes a -plain jar beside the boot jar unless its jar task is disabled. Anything the app needs at runtime has to be inside that one jar.

All examples · Deploy an example