Builds
A build is one execution of a pipeline. Every push, pull request, or manual run produces exactly one build. The build is the thing you watch in the dashboard, the thing you debug, and the thing that produces images, artifacts, and deploys.
If a pipeline is the recipe, a build is the meal.
You can list and inspect builds from the Loha CLI (loha builds) as well as the dashboard (coming soon). The underlying API (GET /api/v1/builds) is live today.
Identifying a build
Every build has a unique build id: this is the canonical way to refer to a
build. It's the first column of the builds list, it's in the build's page title,
and it's the last part of the build's URL (/workspaces/<workspace>/builds/<build-id>).
The build id is what you share when you need to point a teammate at a specific build: paste it into a chat or a ticket, or open the build's URL directly. The builds table shows a shortened form with a copy button that copies the full id to your clipboard.
A build id is stable and unique for the lifetime of the build. It never changes and is never reused. A retry produces a new build with its own id, so the original and the retry are each independently addressable. Behind the scenes the same id identifies the build's underlying execution in the cluster, so platform operators can trace a dashboard build straight through to its logs and events.
Lifecycle
A build moves through a small set of states:
| State | Meaning |
|---|---|
| Queued | Accepted by Loha, waiting for a runner. Usually milliseconds. |
| Running | At least one job is executing. Logs stream live. |
| Succeeded | All jobs finished cleanly. |
| Failed | At least one job exited non-zero, or a step timed out. |
| Cancelled | A user clicked Cancel, or a newer commit superseded this build. |
| Timed out | The build exceeded its plan-defined wall-clock limit. |
Inside the build, each job has its own status, and inside each job, each step has its own status. The build's overall status is derived from the worst job state: one failed job means a failed build.
What you see live
While a build is running, the dashboard shows:
- Live logs for every step, streamed character-by-character.
- Step-level timing: start, duration, current status.
- Job graph: visual
needs:dependencies, what's done, what's running, what's still waiting. - Status badge: sharable URL to the latest build for a branch.
Logs are persisted after the build finishes, so failed builds are debuggable hours or days later. Sensitive values from your secrets are redacted from logs before they reach your browser.