Back to feed

Using uvx in GitHub Actions in a cache-friendly way

Simon Willison's Weblog

Jul 14, 2026

7/14/2026

Time-Based Date Gate Enables Predictable Stability and Planned Upgrades for CI Tooling

Using uvx in GitHub Actions in a cache-friendly way · Simon Willison's Weblog

Science, Technology & Innovation · Jul 14, 2026

Use a time-based resolution boundary (UV_EXCLUDE_NEWER) in uvx to install the latest package as-of a chosen date, creating a lightweight, predictable CI upgrade cadence that balances freshness and repeatability by letting you 'bump the date' to update tools without pinning every package.


7/14/2026

Switching UV Tooling Default From Purge To Cache Would Reduce CI PyPI Downloads

Using uvx in GitHub Actions in a cache-friendly way · Simon Willison's Weblog

Science, Technology & Innovation · Jul 14, 2026

The post says the uv ecosystem’s setup defaults (astral-sh/setup-uv) currently purge PyPI wheels instead of caching them, which forces repeated downloads in GitHub Actions CI and requires workarounds—changing the default to cache would lower CI cost, latency, and external registry dependence.


7/14/2026

Make Cache Stable By Pinning Dependency Resolution Date In GitHub Actions

Using uvx in GitHub Actions in a cache-friendly way · Simon Willison's Weblog

Science, Technology & Innovation · Jul 14, 2026

Pin uvx dependency resolution to a cutoff date (set UV_EXCLUDE_NEWER and include that date in the GitHub Actions cache key) so workflows reuse cached Python tool versions deterministically and avoid repeated PyPI requests while allowing controlled upgrades by changing the date.