fix(ci): fix alpine ABI cache mismatch and orphaned docs commits - #10
Merged
Conversation
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.
vishwateja-angirekula
previously approved these changes
Jul 9, 2026
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
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
__ubsan_handle_divrem_overflow: symbol not found) insidecargo chef cook. Root cause: the BuildKit cache mountid=cargo-target-ucis a persistent cache independent of the base image, and still held proc-macro.soartifacts compiled under the oldrust:latest(glibc) base. After fix(ci): parallelize per-arch builds, cross-compile natively; strip UI #9 switched the builder torust:alpine(musl), rustc reused that stale, ABI-incompatible cache. Renamed the cache id tocargo-target-uc-alpineso it starts fresh.fail-fast: falseon the build matrix. It defaults totrue, 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.fix/parallel-arch-ci-strip-uibranch after fix(ci): parallelize per-arch builds, cross-compile natively; strip UI #9 had already merged, so they never made it tomain: the README fact-fixes (AWS creds aren't feature-gated, it's a runtime flag; stale test count) and thepaths-ignore: ["**/*.md"]docs-only CI skip.Test plan