Skip to content

ci: add build-migration-progress workflow#442

Closed
mrosseel wants to merge 1 commit into
brickbots:mainfrom
mrosseel:ci/migration-progress-builder
Closed

ci: add build-migration-progress workflow#442
mrosseel wants to merge 1 commit into
brickbots:mainfrom
mrosseel:ci/migration-progress-builder

Conversation

@mrosseel
Copy link
Copy Markdown
Collaborator

Summary

Adds .github/workflows/build-migration-progress.yml: on a v*-migration tag push (or manual workflow_dispatch against an existing tag), cross-compiles python/scripts/migration_progress.c for aarch64 (-static -O2, stripped) and attaches the binary + its SHA256 sidecar to the matching release.

Why land this separately from #433?

This workflow is the producer side of a change in #433: that PR drops the pre-compiled migration_progress ELF from the source tree and expects nixos_migration.sh to download + verify it from the release at migration time. The two changes are independent enough to review separately, and there's a practical reason to land this one first:

workflow_dispatch requires the workflow file to exist on the default branch to be triggerable. Until this file is on main, no one can manually rebuild the artifact for an existing v*-migration release tag. Landing this PR makes the dispatcher available even before #433 itself merges.

Caveat

migration_progress.c doesn't yet exist on main — it arrives with #433. Until then this workflow is inert (its build step would fail with "no such file" if dispatched against main). The intended sequence is: this PR merges first → #433 merges → CI rebuilds the binary on the next migration tag.

Test plan

  • CI on this PR itself: lints the YAML, no execution.
  • After merge, manually dispatch with a release_tag=v2.5.0-migration input from a branch that does have migration_progress.c (e.g. the migration branch on the fork) — verify the binary lands in the release with the expected SHA256.

Cross-compiles python/scripts/migration_progress.c for aarch64 on a
v*-migration tag push (or manual workflow_dispatch against an existing
tag) and attaches the stripped static binary + its SHA256 sidecar to
the matching release.

Companion to PR brickbots#433 (NixOS migration infrastructure): that PR removed
the pre-compiled migration_progress blob from the source tree and now
expects nixos_migration.sh to download + verify it at runtime. This
workflow is what produces those release assets.

Landing the workflow file separately so workflow_dispatch is usable
before brickbots#433 itself merges — GitHub Actions requires the workflow file
on the default branch to expose it for manual dispatch.

migration_progress.c isn't on main yet, so the workflow sits inert
until brickbots#433 lands (or a v*-migration tag is created from the migration
branch in the meantime).
@mrosseel
Copy link
Copy Markdown
Collaborator Author

Closing — overengineering for a one-shot binary used by one migration release. The binary stays committed alongside its .c source in #433 so reviewers audit both in the same diff. Reproducibility is provided by git content-addressing the same .c that produces the blob.

@mrosseel mrosseel closed this May 25, 2026
@mrosseel mrosseel deleted the ci/migration-progress-builder branch May 25, 2026 18:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant