ci: ship breadbug and publish debug symbols with every release #30

Merged
Breadway merged 3 commits from feature/breadbug-release into main 2026-10-20 10:54:22 +08:00
Owner

Part of BOS-86 (packaging) and ECO-67 (per-product wiring). Stacked on #26 (needs its systemd units). Touches release workflows, so please read this one with that in mind; nothing runs until it merges to main.

What

  • breadbug is built, stripped, checksummed and shipped with every track (dev on push to main, beta on -rc tags, stable on tags), added to the stable GitHub Release uploads, to bakery.toml binaries and to scripts/install.sh.
  • breadbug-status.service (not enabled) + breadbug-status.timer (enabled) are shipped and installed by bakery. The timer runs breadbug status --notify --quiet daily; it does nothing at all unless the user has turned sending on and has sent a report.
  • New step publish debug symbols, before prepare artifacts (which strips): ci/publish-symbols.sh runs bread-ecosystem's scripts/publish-symbols.sh (bread-ecosystem PR #69) at the pinned ci/bread-ecosystem.rev.
  • Merge-order safety: if the pin predates that script, the step prints a warning and exits 0 instead of failing, so this cannot block a release. Once the pin is bumped past #69 a binary without a GNU build-id fails the job.
  • [profile.release] debug = "line-tables-only": unstripped release binaries keep line tables so frames resolve to file and line; users still download stripped binaries.

Needs from you before this does anything useful

  • Merge bread-ecosystem #69, then bump ci/bread-ecosystem.rev (a one-line follow-up).
  • Create /srv/breadbug-symbols on the runner host (writable by the runner user), the same machine as /srv/breadway-dl.
  • The first dev release after merge will also be the first to carry breadbug; gen-index needs no change (it reads bakery.toml).

Checked

  • All three workflow files parse; the symbols step precedes the strip step in each; bakery.toml and Cargo.toml parse; check-docs passes; the workspace builds and breadbug has a build-id.
  • Not run: the workflows themselves (they need the self-hosted runner), and bakery install of the timer.
Part of BOS-86 (packaging) and ECO-67 (per-product wiring). Stacked on #26 (needs its systemd units). Touches release workflows, so please read this one with that in mind; nothing runs until it merges to main. ## What - `breadbug` is built, stripped, checksummed and shipped with every track (dev on push to main, beta on `-rc` tags, stable on tags), added to the stable GitHub Release uploads, to `bakery.toml` binaries and to `scripts/install.sh`. - `breadbug-status.service` (not enabled) + `breadbug-status.timer` (enabled) are shipped and installed by bakery. The timer runs `breadbug status --notify --quiet` daily; it does nothing at all unless the user has turned sending on and has sent a report. - New step **publish debug symbols**, before `prepare artifacts` (which strips): `ci/publish-symbols.sh` runs bread-ecosystem's `scripts/publish-symbols.sh` (bread-ecosystem PR #69) at the pinned `ci/bread-ecosystem.rev`. - **Merge-order safety**: if the pin predates that script, the step prints a warning and exits 0 instead of failing, so this cannot block a release. Once the pin is bumped past #69 a binary without a GNU build-id fails the job. - `[profile.release] debug = "line-tables-only"`: unstripped release binaries keep line tables so frames resolve to file and line; users still download stripped binaries. ## Needs from you before this does anything useful - Merge bread-ecosystem #69, then bump `ci/bread-ecosystem.rev` (a one-line follow-up). - Create `/srv/breadbug-symbols` on the runner host (writable by the runner user), the same machine as `/srv/breadway-dl`. - The first dev release after merge will also be the first to carry `breadbug`; gen-index needs no change (it reads `bakery.toml`). ## Checked - All three workflow files parse; the symbols step precedes the strip step in each; `bakery.toml` and `Cargo.toml` parse; `check-docs` passes; the workspace builds and `breadbug` has a build-id. - Not run: the workflows themselves (they need the self-hosted runner), and `bakery install` of the timer.
ci: ship breadbug and publish debug symbols with every release
All checks were successful
check / check (push) Successful in 9m23s
5dc25d0ebb
The release, rc and dev workflows now build, strip, checksum and package the
breadbug binary and its daily status timer (bakery installs the timer
enabled; it does nothing unless sending is on and a report was sent). Before
stripping, ci/publish-symbols.sh publishes debug symbols keyed by build-id
through bread-ecosystem's scripts/publish-symbols.sh at the pinned rev; a pin
that predates the script warns instead of failing so merge order cannot
block a release. Release builds keep line tables (debug = line-tables-only)
so crash frames resolve to file and line; shipped binaries are still
stripped.

Refs BOS-86, ECO-67
Merge branch 'feature/breadbug-status' into feature/breadbug-release
All checks were successful
check / check (push) Successful in 16m11s
c0674f8d8e
# Conflicts:
#	.forgejo/workflows/dev-release.yml
Merge branch 'feature/breadbug-status' into feature/breadbug-release
All checks were successful
check / check (push) Successful in 24m32s
85dee283ee
Breadway changed target branch from feature/breadbug-status to main 2026-10-20 10:53:48 +08:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Breadway/bread!30
No description provided.