Repository navigation
fix(ci): retain native dependencies in per-interpreter caches - #105
Merged
Merged
Conversation
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.
Refs #56. Retain native dependencies in per-interpreter caches and document the optional store build prerequisites. Current head
def316703106819a48ddd5f0ff37b88e51dce0f5, tested synthetic7d4a0b9da5ff850eb8073ebcc1929649c827196f, tree36ca8778f60d3ba0885fed98351c1fe292e85d99. No runtime, dependency, test, permission, schedule, timeout or artifact-verification change.Reproduction through the real workflow
The final 3.15 full-wheel job at main
f24a0c5fdfd50f10b32da7a7d5748580de8f38earestores a cache whose key contains the runner's pre-matrix Python3.12.10. It then builds DuckDB 1.5.6 from 03:37:46 to 04:16:52 UTC, runs all 4,695 tests successfully, and reports that it will not save the cache because the original 3.12 key was a hit. The newly compiled 3.15 dependency is never retained under its own interpreter key.The earlier PR93 Windows 3.15 native job shows the same key/hit/no-save sequence and another DuckDB build from 02:49:08 to 03:25:48 UTC. This is repeated behavior from actual qualification jobs, not an inferred source-text regression.
Repair and checks
Give both existing matrix jobs the supported
setup-uvcache-suffix: python-${{ matrix.python-version }}input. The pinned action already includes platform, architecture and dependency hashes in its key. This separates interpreter payloads without changing installation commands. The fresh project-wheel installation, actual imported origin/bytes, complete twelve-cell suites, native cold-call protocol and all other gates remain required.At cache commit
c350667c75fb6ac5b3897a04ecc7446dd0d6d305, Actionlint, all-file hooks and 41 existing artifact/CI invocation cases pass in 12.52s. Final doc commitdef3167adds only 15 installation-guide lines. A fresh actual source installation on Python 3.15.0 passes the literal core, TA and store commands without replacing the development package; TA-Lib 0.8.2 and DuckDB 1.5.6 imports and the README workflow pass. The optional store really compiles DuckDB when no wheel is available. Strict MkDocs 2.15s, rendered heading/commands/links, real upstream HTTP 200 and all-file hooks pass. The preserved 0.1.6 quick start remains linked.Cold seed
c350667completes all native cells, including actual final 3.15.0 on all three systems, and saves the compiled dependencies in the correct interpreter caches. Eleven full-wheel cells each pass all 4,695 tests. The unfinished Windows full-suite attempt is superseded by the final meaningful doc revision, not counted as a pass; its complete partial log is retained.Actual warm reuse is verified at final
def3167on the same pull ref with identical cache producer and dependency hashes. All three final-3.15 native jobs restore their interpreter cache and install locked DuckDB 1.5.6 without rebuilding it. Windows installs the complete dependency environment in 13s, then verifies the fresh dev31+7d4 wheel's real site-packages origin and all 200 package files. Every platform passes ten 53-case fresh MACD processes, two 3-case public-order processes and twelve empty-cache cold-call cases. These are real workflow results, not a source-string assertion or a controlled cross-VM benchmark. The final head's full suites and all other configured gates still must finish before merging.This follow-up is necessary because PR93 was already merged before its fresh-main logs exposed persistent cache loss. It reuses the compatibility record rather than creating replacement issues or a policy-only PR. The old main native job automatically hit its 90-minute limit during dependency installation, before any stress test ran. The actual annotation and log are retained; the owner did not cancel or rerun it. All twelve old-main full suites passed, but that whole head is not qualified. Cache persistence does not eliminate the initial cold build, so this PR must still pass cold qualification as well as actual warm reuse. Release/archive decisions remain separate.
AI assistance: Codex inspected logs and the pinned action input, authored the two workflow lines and matching installation guidance, reviewed scope, executed source-install/rendering checks and inspected the actual hosted cold/warm results. No independent human review is claimed.