Skip to content

ci: cache every compile job and key caches on their full inputs - #20

Merged
abnobdoss merged 2 commits into
mainfrom
ci/ubuntu-build-test
Jul 9, 2026
Merged

abnobdoss merged 2 commits into
mainfrom
ci/ubuntu-build-test

Conversation

@abnobdoss

Copy link
Copy Markdown
Owner

No description provided.

abnobdoss added 2 commits July 8, 2026 19:47
PUBLIC_API_CRATES was computed with $(shell cargo metadata ...) at parse
time, so every make invocation paid a cargo metadata call. In CI this ran
before the toolchain setup step, making the rustup shim download the whole
nightly toolchain inside the docker startup step (~9s). Evaluate the crate
list inside the two public-api recipes that use it instead.

Also detach the docker-up-background subshell's stdio so the caller isn't
left holding open pipes until the containers finish starting (~5s of CI
runner drain time).
Add rust-cache to the clippy and msrv jobs (the last uncached compile
jobs) and to the bindings test job on Linux, which builds on the host
like the other platforms since no manylinux input is passed.

Key every cache on the runner image and a hash of the files defining
the build (workflow file, Makefile, root Cargo.toml): rust-cache skips
saving on exact primary-key hits, so a blob saved by outdated steps or
a different runner image could otherwise never heal. The root manifest
is virtual and thus outside rust-cache's own manifest hashing.

Build the bindings test wheel with a new fast ci profile instead of the
size-optimized release profile that publishing uses, and lock the ci.yml
build invocations. Exclude pyiceberg_core_rust from the Windows build:
it is a fully serialized tail there and the bindings workflow compiles
the same crate on windows-latest for every code PR.

Drop the cargo-public-api install-action step: the tool has no prebuilt
binaries anywhere, so the step source-compiled a version that differs
from the Makefile pin, overwriting the cached binary on every run and
forcing the make target to recompile its own.
@abnobdoss abnobdoss changed the title build: evaluate the public api crate list lazily ci: cache every compile job and key caches on their full inputs Jul 9, 2026
@abnobdoss
abnobdoss merged commit 2ded86f into main Jul 9, 2026
4 of 9 checks passed
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