Skip to content

feat(builds): show the build machine and where each build ran - #434

Draft
PiquelChips wants to merge 1 commit into
feat/builds-builder-unavailablefrom
feat/builds-builder-status
Draft

PiquelChips wants to merge 1 commit into
feat/builds-builder-unavailablefrom
feat/builds-builder-status

Conversation

@PiquelChips

Copy link
Copy Markdown
Member

With a build machine (#428), nothing showed whether it was configured or reachable, or where a given build ran. You found out when a deployment failed.

The daemon now keeps the latest check of the build machine's BuildKit daemon, made before each build (#432) or on request, and every surface shows it:

  • API: GET /api/v1/system/status includes builder: its address, repository and latest check, only with system:read, like DNS providers. POST /api/v1/system/builder/check checks it now (system:operate), or answers 404 builder_not_configured without a build machine. Each build record has built_on, host or build_machine.
  • CLI: piquelctl status shows the build machine and its latest check. piquelctl builder check checks it now and exits 6 while it is unreachable. piquelctl builds list ends each line with on the build machine or on the host.
  • Dashboard: the Builds page shows the build machine above the list, warns while it was unreachable, and has Check now. Each build's details say where it was built.

Where a build ran needs no migration: a build machine's image is a repository digest, and the host's is a local image ID (#428). A job run, or a build that reused an image, has no location.

Narrower than the issue

  • No builder show: piquelctl status already shows the build machine, so the only new command is builder check.
  • Builds page only: the build machine panel is on the Builds page, not on each application's Builds tab.

Testing

  • Unit tests for recording a check, the status line in piquelctl, and where a build ran.
  • A browser test on the Builds page: an unreachable build machine shows its warning, and Check now updates it.
  • On a development instance with a BuildKit daemon: piquelctl status before any check, builder check with the daemon up and stopped, and builds list naming where each build ran.
  • I didn't look at the dashboard panel in a browser myself: the development instance's tailnet URL doesn't resolve from the shell I worked in. The browser test above is what covers it.
  • cargo nextest for piqueld, piquelctl, piqueld-client and piqueld-core, Clippy for the workspace and the browser target, just openapi-check, just docs.

Stacked on #432. Closes #407. Part of #403.

Note

Written by Claude Opus 5.5 in Claude Code (via T3 Code)

🤖 Generated with Claude Code

@PiquelChips PiquelChips added the enhancement New feature or request label Nov 10, 2026
@github-project-automation github-project-automation Bot moved this to Needs Triage in origin-src.dev Nov 10, 2026
@coderabbitai

coderabbitai Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

The daemon keeps the latest check of the build machine's BuildKit daemon,
reports it in its status, and checks it on request. piquelctl status, the
new piquelctl builder check and the dashboard's Builds page show it, and
each build says whether it ran on the host or the build machine.

Closes #407.
@PiquelChips
PiquelChips force-pushed the feat/builds-builder-status branch from 2a0c161 to 553deb7 Compare November 13, 2026 13:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

Status: Needs Triage

Development

Successfully merging this pull request may close these issues.

feat(builds): show the builder in the CLI and dashboard

1 participant