Skip to content

fix(ci): fix alpine ABI cache mismatch and orphaned docs commits - #10

Merged
vishwateja-angirekula merged 5 commits into
mainfrom
fix/alpine-cache-abi-mismatch
Jul 9, 2026
Merged

fix(ci): fix alpine ABI cache mismatch and orphaned docs commits#10
vishwateja-angirekula merged 5 commits into
mainfrom
fix/alpine-cache-abi-mismatch

Conversation

@muralidhar-challa

Copy link
Copy Markdown
Collaborator

Summary

  • The push-to-main build after fix(ci): parallelize per-arch builds, cross-compile natively; strip UI #9 merged failed on both amd64/arm64 legs with a linker relocation error (__ubsan_handle_divrem_overflow: symbol not found) inside cargo chef cook. Root cause: the BuildKit cache mount id=cargo-target-uc is a persistent cache independent of the base image, and still held proc-macro .so artifacts compiled under the old rust:latest (glibc) base. After fix(ci): parallelize per-arch builds, cross-compile natively; strip UI #9 switched the builder to rust:alpine (musl), rustc reused that stale, ABI-incompatible cache. Renamed the cache id to cargo-target-uc-alpine so it starts fresh.
  • Set fail-fast: false on the build matrix. It defaults to true, which cancels sibling arch legs the moment one fails — making genuinely independent per-arch jobs look coupled/interdependent in the Actions UI, when the workflow graph itself has no dependency between them.
  • Also carries over two commits that were pushed to the old fix/parallel-arch-ci-strip-ui branch after fix(ci): parallelize per-arch builds, cross-compile natively; strip UI #9 had already merged, so they never made it to main: the README fact-fixes (AWS creds aren't feature-gated, it's a runtime flag; stale test count) and the paths-ignore: ["**/*.md"] docs-only CI skip.

Test plan

  • CI run on this PR (test job) passes
  • Once merged, push-to-main build actually completes for both amd64 and arm64 without the relocation error
  • Manually confirm a docs-only follow-up PR skips the pipeline entirely

aws-sdk-sts/s3 have no Cargo feature gate (uc-credentials/Cargo.toml
has no [features] section at all) -- they're always compiled in.
What's actually toggled is a runtime flag, --enable-aws-credentials,
which picks with_aws() vs new() at startup. Also updates the stale
"16 unit tests" count now that the workspace has grown well past that.
paths-ignore on both push and pull_request triggers so a diff that
only touches *.md files doesn't spin up the test/build/manifest jobs.
The push-to-main build after merging #9 failed on both arch legs:
  error relocating .../libsqlx_macros-*.so: __ubsan_handle_divrem_overflow: symbol not found

Root cause: the BuildKit cache mount id=cargo-target-uc is a persistent
cache keyed by that fixed id, independent of the base image. It still
held proc-macro .so artifacts compiled under the old rust:latest
(glibc/Debian) base from prior runs. After switching the builder to
rust:alpine (musl) in #9, rustc tried to reuse those cached artifacts,
which are ABI-incompatible with alpine's toolchain/runtime symbols.
Renamed the cache id to cargo-target-uc-alpine so it starts fresh under
the new base instead of reusing incompatible cached artifacts.

Also sets fail-fast: false on the build matrix -- it defaults to true,
which cancels sibling arch legs the moment one fails, making genuinely
independent per-arch jobs look coupled in the Actions UI.
They were running one after another in a single job, with clippy and
test each separately recompiling the whole workspace under different
cargo profiles. Splitting into three independent jobs lets them run
concurrently, cutting real wall-clock time on every PR/push.
…est + toolchain install

Drops the dtolnay/rust-toolchain install step in favor of a preinstalled
rust:slim container -- glibc-based (unlike rust:alpine, whose musl libc
can't run the glibc Node.js binary GitHub Actions injects to execute
actions/checkout and other JS-based actions), and much smaller/faster
to pull than rust:latest. The image's rustup install uses the minimal
profile, which excludes rustfmt/clippy, so those are added explicitly.
@vishwateja-angirekula
vishwateja-angirekula merged commit d549f77 into main Jul 9, 2026
1 of 3 checks passed
@muralidhar-challa
muralidhar-challa deleted the fix/alpine-cache-abi-mismatch branch July 9, 2026 07:39
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.

2 participants