Conversation
Default behavior unchanged: local ./configure.sh still wipes deno_cache before re-vendoring. CI opts into cache preservation by setting QUARTO_SKIP_DENO_CACHE_WIPE=1, enabling actions/cache to restore the cache and have it survive vendor.sh.
Windows counterpart to the vendor.sh change. Behavior matches: default wipes, QUARTO_SKIP_DENO_CACHE_WIPE=1 preserves.
Adds actions/cache restore for ./package/dist/bin/deno_cache, keyed on the five files that influence Deno dep resolution: configuration, src/import_map.json, src/vendor_deps.ts, tests/test-deps.ts, and package/scripts/deno_std/deno_std.ts. Both configure steps set QUARTO_SKIP_DENO_CACHE_WIPE=1 so the restored cache survives the configure.sh / configure.cmd run. Adds dev-docs/ci-deno-caching.md explaining the cache layout, key composition, env var contract, and how to force invalidation. Adds a cross-link from dev-docs/upgrade-dependencies.md so a contributor bumping deno_std version sees the cache consequences. Expected per-OS cache size ~150-200 MB; total footprint ~600 MB across Linux/macOS/Windows, well under GitHub's 10 GB repo quota.
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.
Every CI run re-downloads Quarto's main Deno development cache — roughly 30s per job across three OS matrix entries. The cache at
./package/dist/bin/deno_cacheis wiped at the start ofvendor.sh/vendor.cmdand re-populated by adeno installloop. That makes each green run dependent ondeno.landavailability, so a transient upstream 500 during that window flips the build red.This PR caches
./package/dist/bin/deno_cacheviaactions/cache@v5and coordinates with the vendor scripts so the restored cache survives the configure step.How it works
Two coordinated changes:
vendor.shandvendor.cmdgain a conditional guard around the existing pre-install wipe. Default behavior is unchanged — local./configure.shstill wipes. OnlyQUARTO_SKIP_DENO_CACHE_WIPE=1opts into preservation..github/workflows/actions/quarto-dev/action.ymladds a cache step and setsQUARTO_SKIP_DENO_CACHE_WIPE=1on both configure steps, so the restored cache survives through todeno install.Cache key
Five files drive the hash:
configuration— pins the Deno binary versionsrc/import_map.json— top-level dep version mappingsrc/vendor_deps.ts— main vendor entrypointtests/test-deps.ts— test deps entrypointpackage/scripts/deno_std/deno_std.ts— deno_std entrypointThe vendor scripts themselves are intentionally not in the key.
hashFiles()is OS-independent, so includingvendor.shwould cross-invalidate the Windows cache on a Unix-only edit. If cache shape ever changes subtly, the escape hatch is bumping the-v1-version prefix rather than continuous invalidation. Full rationale indev-docs/ci-deno-caching.md.Verification plan
./configure.shwith no env var set still wipespackage/dist/bin/deno_cacheand re-downloads, as todayNo changelog entry
This is a CI/infra-only change with no user-observable behavior; local
./configure.shis unchanged. Precedent fromchangelog-1.9.md— CI and infrastructure changes don't get entries.Expected cache footprint
~150–200 MB per OS, ~600 MB across Linux / macOS / Windows. Well under GitHub's 10 GB per-repo quota.