fix(ci): parallelize per-arch builds, cross-compile natively; strip UI - #9
Merged
Merged
Conversation
The single multi-platform buildx job forced the entire arm64 stage to run under QEMU emulation (including compiling cargo-chef/cargo-zigbuild from source), turning a 5-10min build into a 2+ hour hang. Split into a per-arch matrix build (amd64/arm64 in parallel) plus a manifest job that merges them, and pin the Dockerfile's builder stages to --platform=$BUILDPLATFORM so zig cross-compiles from the native amd64 runner instead of emulating the target arch. Also switches the builder base from rust:latest to rust:alpine for a lighter/faster pull (final image is already FROM scratch, so this doesn't change image size).
New CI test job runs `cargo fmt --check` and `clippy -D warnings`, so the pre-existing debt needed clearing first: reformat 6 drifted files, rename SecurableType::from_str -> parse (shadowed std::str::FromStr), &PathBuf -> &Path in uc-server main.rs, derive Default instead of hand-writing it, allow too_many_arguments on three 1-arg-per-field constructors, and scope #![allow(dead_code)] on the shared test-helpers module (each integration test file compiles it as a separate binary, so helpers unused by one binary but used by another were false positives).
Dropping ui/ (React/TS frontend, proxy → server on :8080). It was self-contained — no CI job built or pushed it, and nothing else in the repo referenced it besides three mentions in README.md, now removed.
vishwateja-angirekula
approved these changes
Jul 9, 2026
vishwateja-angirekula
approved these changes
Jul 9, 2026
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
cargo-chef/cargo-zigbuildfrom source), turning a 5-10min build into a 2+ hour hang. Split into a per-arch matrix (amd64/arm64 build in parallel) + a manifest job that merges them into multi-arch tags, and pinned the Dockerfile's builder stages to--platform=$BUILDPLATFORMso zig cross-compiles natively regardless of target arch.rust:latest→rust:alpinefor a lighter/faster pull (final image is alreadyFROM scratch, so image size is unchanged).testjob (cargo fmt --check,clippy -D warnings,cargo test --workspace) that runs on PRs and gates the docker build on push tomain. Cleared the pre-existing debt needed to make that gate pass clean (formatting drift in 6 files, a method shadowingFromStr::from_str, a manualDefaultimpl,&PathBuf→&Path, a fewtoo_many_argumentsallows on 1-arg-per-field constructors, and scopeddead_codeallow on the shared test-helpers module).ui/: the React frontend was self-contained (own Dockerfile, no CI job built/pushed it) — deleted it and its 3 mentions in README.md.Test plan
cargo fmt --all -- --checkpassescargo clippy --workspace --all-targets -- -D warningspasses with zero warningscargo test --workspacepasses (all suites green)cargo build --workspacesucceeds after ui/ removal