Zeabur Builderv1alpha1
Push a commit, get an image digest.
Zeabur Builder is a Kubernetes operator that builds container images from Git with BuildKit. Each new commit is built once and pushed to your registry, and the image goes into status.latestImage for your rollout tool.
It builds images, your rollout tool deploys them.
- dockerfile · railpack
Two builders
dockerfile builds your Dockerfile. Repositories without one are planned with Railpack, and those images run as uid 1000, so they start under Pod Security restricted.
- buildkitd
One buildkitd per namespace
Each has its own cache, certificate authority and registry path. The cache stays between builds, and an idle buildkitd scales to zero after 10 minutes.
- tags
Tags that sort
main-1761058800-3e1a9c2: branch, Unix time and commit. Flux, Argo CD Image Updater and Keel can roll out from them.
From ref to digest, every step is a Kubernetes object.
Resolve the ref
The controller resolves the Build's ref to a commit over Git's smart HTTP or SSH protocol.
Build
A new commit gets a BuildRun and a Job. The Job runs buildctl against its namespace's buildkitd and needs no privileges.
Push
The image is pushed, and its digest and tags land in the BuildRun and the Build.
When it builds
| Trigger | How it works | Setup |
|---|---|---|
| Polling | The controller asks the Git server for the ref every minute | None; spec.triggers.pollInterval changes it |
| Push webhooks | GitHub, GitLab, Gitea, Forgejo, Bitbucket and Standard Webhooks | Enable webhooks in the chart, one secret per Build |
| GitHub App | Private repositories with a short-lived installation token, and a commit status per commit | A cluster admin creates the App once |
| By hand | A new value in the builder.zeabur.com/rebuild annotation rebuilds the current commit | spec.suspend stops automatic builds |
One Build per repository
A Build names a Git repository and a builder. Leave out ref to follow the default branch; status.resolvedRef says which branch that was.
apiVersion: builder.zeabur.com/v1alpha1
kind: Build
metadata: {name: whoami, namespace: team-a}
spec:
source: {git: {url: https://github.com/traefik/whoami}}
builderRef: dockerfile