Skip to content

feat: publish a debug-only firecracker binary (gdb-enabled)#26

Merged
kalyazin merged 2 commits into
mainfrom
kalyazin/debug-fc-binary
Jun 25, 2026
Merged

feat: publish a debug-only firecracker binary (gdb-enabled)#26
kalyazin merged 2 commits into
mainfrom
kalyazin/debug-fc-binary

Conversation

@kalyazin

Copy link
Copy Markdown
Contributor

For each FC version, also build and publish a debug variant alongside the prod binary: a release (optimized) build with debug symbols kept and the upstream gdb feature enabled (--features gdb), plus its split DWARF companion. Used only for debugging guest kernels on dev nodes.

Published as firecracker-debug (+ firecracker-debug.debug) next to firecracker. Client nodes resolve the FC binary at exactly <version>/<arch>/firecracker, so the differently-named debug artifacts are never pulled by prod; the dev debugging workflow fetches them explicitly, matched to a snapshot's firecracker version.

  • build.sh: second build with --features gdb, emit firecracker-debug + repoint the debuglink to the renamed DWARF companion.
  • release.yml: build skip-check requires both prod and debug assets; publish attaches firecracker-debug-[.debug]; deploy uploads them to each env's GCS bucket at the firecracker-debug[.debug] name.
  • upload-release-to-gcs.sh: also uploads the debug artifacts to the parallel path.

@cla-bot cla-bot Bot added the cla-signed label Jun 12, 2026
@cursor

cursor Bot commented Jun 12, 2026

Copy link
Copy Markdown

PR Summary

Low Risk
CI/build and storage path changes only; prod clients still resolve firecracker and are not pointed at the debug binaries.

Overview
Adds a second optimized Firecracker build with --features gdb, emitting firecracker-debug and split DWARF, and wires release/GCS upload for those names alongside prod firecracker.

check_artifacts_needed and the workflow build skip step only require firecracker-<arch> and firecracker-debug-<arch>, not firecracker-debug-<arch>.debug, so a release can be considered complete and skip rebuilding when the DWARF companion is still missing on the release.

Reviewed by Cursor Bugbot for commit 4c3ad86. Bugbot is set up for automated code reviews on this repo. Configure here.

Comment thread .github/workflows/release.yml
@kalyazin kalyazin force-pushed the kalyazin/debug-fc-binary branch from 75f6b58 to e080826 Compare June 12, 2026 17:46

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit e080826. Configure here.

Comment thread build.sh
For each FC version, also build and publish a debug variant alongside the prod
binary: a release (optimized) build with debug symbols kept and the upstream gdb
feature enabled (`--features gdb`), plus its split DWARF companion. Used only for
debugging guest kernels on dev nodes.

Published as `firecracker-debug` (+ `firecracker-debug.debug`) next to
`firecracker`. Client nodes resolve the FC binary at exactly
`<version>/<arch>/firecracker`, so the differently-named debug artifacts are never
pulled by prod; the dev debugging workflow fetches them explicitly, matched to a
snapshot's firecracker version.

- build.sh: second build with `--features gdb`, emit firecracker-debug + repoint
  the debuglink to the renamed DWARF companion.
- release.yml: build skip-check requires both prod and debug assets; publish
  attaches firecracker-debug-<arch>[.debug]; deploy uploads them to each env's
  GCS bucket at the firecracker-debug[.debug] name.
- validate.py: the has_new_artifacts gate (which decides whether publish
  downloads and uploads the freshly built artifacts) now requires both the
  prod and the debug binary, so a release that already has the prod binary
  but not the debug one still gets published.
- upload-release-to-gcs.sh: also uploads the debug artifacts to the parallel path.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Signed-off-by: Nikita Kalyazin <nikita.kalyazin@e2b.dev>
@kalyazin kalyazin force-pushed the kalyazin/debug-fc-binary branch from e080826 to cd25338 Compare June 12, 2026 20:33
@kalyazin kalyazin marked this pull request as ready for review June 15, 2026 14:27
@kalyazin kalyazin merged commit 5e401a5 into main Jun 25, 2026
7 checks passed
@kalyazin kalyazin deleted the kalyazin/debug-fc-binary branch June 25, 2026 10:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants