Skip to content

Build System

deploybase builds static sites in isolated Kubernetes Jobs. Each build gets its own container with controlled resources and network access.

1. Git clone (branch + commit)
2. Install dependencies (framework-specific)
3. Run build command
4. Upload output directory to Bunny.net CDN storage
5. Configure CDN edge rule (production or preview)
6. Update deployment status
7. Send notification email

Each build runs in a dedicated Kubernetes Job pod:

ResourceLimit
CPU1 core
Memory2 GB
Disk10 GB temporary storage
Timeout10 minutes
NetworkIsolated namespace

Builds cannot access other builds, the deploybase database, or internal services. They can access the public internet (for downloading dependencies from npm, crates.io, etc.).

Each framework uses a specific Docker image:

FrameworkImage
Next.js, SvelteKit, Astro, Vite, Gatsby, Customnode:24-alpine
Hugohugomods/hugo:0.139.0
Jekylljekyll/jekyll:4

The install and build commands run inside this image. Node.js frameworks use npm install by default.

The full build command is constructed as:

{install_command} && {build_command}

For Hugo (no install step), only the build command runs: hugo --minify.

Custom build commands can be set per project. They are validated for safety — shell metacharacters (&, ;, |, `, $, ()) are rejected to prevent command injection. See Supported Frameworks for validation rules.

After a successful build, the contents of the output directory are uploaded to Bunny.net CDN storage at:

/{tenant_id}/{project_slug}/{deployment_id}/

Uploads run concurrently (10 parallel workers) with automatic Content-Type detection based on file extension.

Build minute usage is tracked per billing period. Limits depend on the subscription plan — see pricing for current limits.

When a build exceeds the 10-minute timeout, it is terminated and the deployment status is set to failed.

Pending, queued, or building deployments can be cancelled:

Terminal window
curl -X POST https://api.deploybase.eu/api/v1/deployments/DEPLOYMENT_ID/cancel \
-H "Authorization: Bearer $TOKEN"

Cancelled builds do not count toward build minute usage.