Repository navigation
ci: cache compilations and trim redundant CI and test work - #184
Merged
Merged
Conversation
- Fetch GoogleTest from its checksummed v1.14.0 release archive instead of cloning the repository in every configured build. - Add rabitq_test::TempFile, which removes a test's file and IVF sidecar even after a failed assertion, and use it for the index and I/O tests that cleaned up by hand. - Remove the shared float-comparison macro and random-vector generator, which had one caller each; use EXPECT_NEAR and a local generator. - Train QGKMeans at the exact 65536 maximum only with raw storage: its quantized rows share the 65536-wide padded layout of the 65535 cases. - Build the 20000-centroid historical HNSW IVF fixture for one storage width; both widths' legacy headers are still covered below it.
- Persist ccache between runs with actions/cache in every Linux and macOS job that builds with native tuning disabled. The native-tuned Ubuntu job stays uncached because ccache keys -march=native literally. - Build the Linux Python extension from source once (3.11); release wheel jobs already build and fully test cp311 and cp314 on every PR. - Build each Windows wheel ABI on its own runner, the longest PR check. - Run the add_subdirectory and FetchContent consumer integrations on the GCC Ubuntu partition and one MSVC partition; run.cmake gains RABITQ_INTEGRATIONS=ALL|PACKAGE and other partitions check the package. - Add a cpp_core selection so index- and clustering-only changes skip the core/FastScan consumer matrix. - Use a blob-less clone and the runner Python for change detection, and the runner's ShellCheck. - Parse workflows with PyYAML in the CI contract tests instead of matching their text, and cover the new cache, integration and selection rules.
Pull requests now restore the newest cache saved from main and never save, so their per-commit entries cannot fill the repository cache quota and evict the main cache that every pull request starts from.
gouyt13
force-pushed
the
ci/test-efficiency
branch
from
October 30, 2026 21:15
c86c742 to
302ddfb
Compare
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
Reduce redundant CI and test work without changing library code or required status-check names.
main(setup-ccache) and only pushes tomainsave it (save-ccache), so pull requests cannot evict it from the repository cache quota. The native-tunedUbuntujob is excluded because ccache keys-march=nativeliterally; Visual Studio generators do not support compiler launchers.tests/core_consumer/run.cmakeacceptsRABITQ_INTEGRATIONS=ALL|PACKAGE(defaultALL). All three integration methods still run on GCC Ubuntu (OpenMP ON/OFF) and one MSVC configuration; the other consumers check the installed package only (30 of the former 60 configurations). A newcpp_corechange group skips these jobs for index- or clustering-only changes.main); the duplicate Python 3.14 Linux source build is removed. googletest is fetched as a hashed release tarball; change detection uses a blob-less clone and the runner's Python.rabitq_test::TempFileRAII helper replaces about 45 manual temporary-file cleanups; unused helpers intests/commonare removed; the slowest QG k-means case and one Python HNSW fixture skip redundant combinations covered elsewhere.cpp_corerules.docs/maintaining.mdandtests/README.mdare updated.Testing
main); no temporary files left behind.run.cmakewithRABITQ_INTEGRATIONS=PACKAGEbuilt and tested only the package integration.windows-2025-vs2026label warning) andgit diff --checkpassed.Validation was local Linux. Cache behavior and the actual time savings can only be measured on hosted runners; caches become available after the first push to
main.