Releases: astral-sh/setup-uv
v8.1.0 🌈 New input `no-project`
Changes
This add the a new boolean input no-project.
It only makes sense to use in combination with activate-environment: true and will append --no project to the uv venv call. This is for example useful if you have a pyproject.toml file with parts unparseable by uv
🚀 Enhancements
🧰 Maintenance
- fix: grant contents:write to validate-release job @eifinger (#860)
- Add a release-gate step to the release workflow @zanieb (#859)
- Draft commitish releases @eifinger (#858)
- Add action-types.yml to instructions @eifinger (#857)
- chore: update known checksums for 0.11.7 @github-actions[bot] (#853)
- Refactor version resolving @eifinger (#852)
- chore: update known checksums for 0.11.6 @github-actions[bot] (#850)
- chore: update known checksums for 0.11.5 @github-actions[bot] (#845)
- chore: update known checksums for 0.11.4 @github-actions[bot] (#843)
- Add a release workflow @zanieb (#839)
- chore: update known checksums for 0.11.3 @github-actions[bot] (#836)
📚 Documentation
- Update ignore-nothing-to-cache documentation @eifinger (#833)
- Pin setup-uv docs to v8 @eifinger (#829)
⬆️ Dependency updates
- chore(deps): bump release-drafter/release-drafter from 7.1.1 to 7.2.0 @dependabot[bot] (#855)
v8.0.0 🌈 Immutable releases and secure tags
This is the first immutable release of setup-uv 🥳
All future releases are also immutable, if you want to know more about what this means checkout the docs.
This release also has two breaking changes
New format for manifest-file
The previously deprecated way of defining a custom version manifest to control which uv versions are available and where to download them from got removed. The functionality is still there but you have to use the new format.
No more major and minor tags
To increase security even more we will stop publishing minor tags. You won't be able to use @v8 or @v8.0 any longer. We do this because pinning to major releases opens up users to supply chain attacks like what happened to tj-actions.
Tip
Use the immutable tag as a version astral-sh/setup-uv@v8.0.0
Or even better the githash astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57
🚨 Breaking changes
- Remove update-major-minor-tags workflow @eifinger (#826)
- Remove deprecrated custom manifest @eifinger (#813)
🧰 Maintenance
- Shortcircuit latest version from manifest @eifinger (#828)
- Simplify inputs.ts @eifinger (#827)
- Bump release-drafter to v7.1.1 @eifinger (#825)
- Refactor inputs @eifinger (#823)
- Replace inline compile args with tsconfig @eifinger (#824)
- chore: update known checksums for 0.11.2 @github-actions[bot] (#821)
- chore: update known checksums for 0.11.1 @github-actions[bot] (#817)
- chore: update known checksums for 0.11.0 @github-actions[bot] (#815)
- Fix latest-version workflow check @eifinger (#812)
- chore: update known checksums for 0.10.11/0.10.12 @github-actions[bot] (#811)
v7.6.0 🌈 Fetch uv from Astral's mirror by default
Changes
We now default to download uv from releases.astral.sh.
This means by default we don't hit the GitHub API at all and shouldn't see any rate limits and timeouts any more.
🚀 Enhancements
🧰 Maintenance
- Switch to ESM for source and test, use CommonJS for dist @eifinger (#806)
- chore: update known checksums for 0.10.10 @github-actions[bot] (#804)
⬆️ Dependency updates
- chore(deps): bump zizmorcore/zizmor-action from 0.5.0 to 0.5.2 @dependabot[bot] (#808)
- Bump deps @eifinger (#805)
v7.5.0 🌈 Use `astral-sh/versions` as version provider
No more rate-limits
This release addresses a long-standing source of timeouts and rate-limit failures in setup-uv.
Previously, the action resolved version identifiers like 0.5.x by iterating over available uv releases via the GitHub API to find the best match. In contrast, latest and exact versions such as 0.5.0 skipped version resolution entirely and downloaded uv directly.
The manifest-file input was an earlier attempt to improve this. It allows providing an url to a file that lists available versions, checksums, and even custom download URLs. The action also shipped with such a manifest.
However, because that bundled file could become outdated whenever new uv releases were published, the action still had to fall back to the GitHub API in many cases.
This release solves the problem by sourcing version data from Astral’s versions repository via the raw content endpoint:
https://raw.githubusercontent.com/astral-sh/versions/refs/heads/main/v1/uv.ndjson
By using the raw endpoint instead of the GitHub API, version resolution no longer depends on API authentication and is much less likely to run into rate limits or timeouts.
Tip
The next section is only interesting for users of the manifest-file input
The manifest-file input lets you override that source with your own URL, for example to test custom uv builds or alternate download locations.
The manifest file must be in NDJSON format, where each line is a JSON object representing a version and its artifacts. For example:
{"version":"0.10.7","artifacts":[{"platform":"x86_64-unknown-linux-gnu","variant":"default","url":"https://example.com/uv-x86_64-unknown-linux-gnu.tar.gz","archive_format":"tar.gz","sha256":"..."}]}
{"version":"0.10.6","artifacts":[{"platform":"x86_64-unknown-linux-gnu","variant":"default","url":"https://example.com/uv-x86_64-unknown-linux-gnu.tar.gz","archive_format":"tar.gz","sha256":"..."}]}Warning
The old format still works but is deprecated. A warning will be logged when you use it.
Changes
🚀 Enhancements
📚 Documentation
v7.4.0 🌈 Add riscv64 architecture support to platform detection
Changes
Thank you @luhenry for adding support for riscv64 arch
🚀 Enhancements
🧰 Maintenance
- Delete .github/workflows/dependabot-build.yml @eifinger (#789)
- Harden Dependabot build workflow @eifinger (#788)
- Fix: check PR author instead of event sender for Dependabot detection @eifinger-bot (#787)
- chore: update known checksums for 0.10.9 @github-actions[bot] (#783)
- Add workflow to auto-build dist on Dependabot PRs @eifinger-bot (#782)
- chore: update known checksums for 0.10.8 @github-actions[bot] (#779)
- chore: update known checksums for 0.10.7 @github-actions[bot] (#775)
⬆️ Dependency updates
- chore(deps): bump versions @eifinger (#792)
- Bump actions/setup-node from 6.2.0 to 6.3.0 @dependabot[bot] (#790)
- Bump eifinger/actionlint-action from 1.10.0 to 1.10.1 @dependabot[bot] (#778)
v7.3.1 🌈 fall back to VERSION_CODENAME when VERSION_ID is not available
Changes
This release adds support for running in containers like debian:testing or debian:unstable
🐛 Bug fixes
- fix: fall back to VERSION_CODENAME when VERSION_ID is not available @eifinger-bot (#774)
🧰 Maintenance
- chore: update known checksums for 0.10.6 @github-actions[bot] (#771)
- chore: update known checksums for 0.10.5 @github-actions[bot] (#770)
- chore: update known checksums for 0.10.4 @github-actions[bot] (#768)
- chore: update known checksums for 0.10.3 @github-actions[bot] (#767)
- chore: update known checksums for 0.10.2 @github-actions[bot] (#765)
- chore: update known checksums for 0.10.1 @github-actions[bot] (#764)
⬆️ Dependency updates
- Bump github/codeql-action from 4.31.9 to 4.32.2 @dependabot[bot] (#766)
- Bump zizmorcore/zizmor-action from 0.4.1 to 0.5.0 @dependabot[bot] (#763)
v7.3.0 🌈 New features and bug fixes for activate-environment
Changes
This release contains a few bug fixes and a new feature for the activate-environment functionality.
🐛 Bug fixes
- fix: warn instead of error when no python to cache @eifinger (#762)
- fix: use --clear to create venv @eifinger (#761)
🚀 Enhancements
🧰 Maintenance
- chore: update known checksums for 0.10.0 @github-actions[bot] (#759)
- refactor: tilde-expansion tests as unittests and no self-hosted tests @eifinger (#760)
- chore: update known checksums for 0.9.30 @github-actions[bot] (#756)
- chore: update known checksums for 0.9.29 @github-actions[bot] (#748)
📚 Documentation
- Fix punctuation @pm-dev563 (#747)
⬆️ Dependency updates
- Bump typesafegithub/github-actions-typing from 2.2.1 to 2.2.2 @dependabot[bot] (#753)
- Bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 @dependabot[bot] (#751)
- Bump actions/checkout from 6.0.1 to 6.0.2 @dependabot[bot] (#740)
- Bump release-drafter/release-drafter from 6.1.0 to 6.2.0 @dependabot[bot] (#743)
- Bump eifinger/actionlint-action from 1.9.3 to 1.10.0 @dependabot[bot] (#731)
- Bump actions/setup-node from 6.1.0 to 6.2.0 @dependabot[bot] (#738)
v7.2.1 🌈 update known checksums up to 0.9.28
Changes
🧰 Maintenance
- chore: update known checksums for 0.9.28 @github-actions[bot] (#744)
- chore: update known checksums for 0.9.27 @github-actions[bot] (#742)
- chore: update known checksums for 0.9.26 @github-actions[bot] (#734)
- chore: update known checksums for 0.9.25 @github-actions[bot] (#733)
- chore: update known checksums for 0.9.24 @github-actions[bot] (#730)
📚 Documentation
⬆️ Dependency updates
- Bump zizmorcore/zizmor-action from 0.3.0 to 0.4.1 @dependabot[bot] (#741)
v7.2.0 🌈 add outputs python-version and python-cache-hit
Changes
Among some minor typo fixes and quality of life features for developers of actions the main feature of this release are new outputs:
- python-version: The Python version that was set (same content as existing
UV_PYTHON) - python-cache-hit: A boolean value to indicate the Python cache entry was found
While implementing this it became clear, that it is easier to handle the Python binaries in a separate cache entry. The added benefit for users is that the "normal" cache containing the dependencies can be used in all runs no matter if these cache the Python binaries or not.
Note
This release will invalidate caches that contain the Python binaries. This happens a single time.
🐛 Bug fixes
🚀 Enhancements
- add outputs python-version and python-cache-hit @eifinger (#728)
- Add action typings with validation @krzema12 (#721)
🧰 Maintenance
- fix: use uv_build backend for old-python-constraint-project @eifinger (#729)
- chore: update known checksums for 0.9.22 @github-actions[bot] (#727)
- chore: update known checksums for 0.9.21 @github-actions[bot] (#726)
- chore: update known checksums for 0.9.20 @github-actions[bot] (#725)
- chore: update known checksums for 0.9.18 @github-actions[bot] (#718)
⬆️ Dependency updates
- Bump peter-evans/create-pull-request from 7.0.9 to 8.0.0 @dependabot[bot] (#719)
- Bump github/codeql-action from 4.31.6 to 4.31.9 @dependabot[bot] (#723)
v7.1.6 🌈 add OS version to cache key to prevent binary incompatibility
Changes
This release will invalidate your cache existing keys!
The os version e.g. ubuntu-22.04 is now part of the cache key. This prevents failing builds when a cache got populated with wheels built with different tools (e.g. glibc) than are present on the runner where the cache got restored.
🐛 Bug fixes
🧰 Maintenance
- chore: update known checksums for 0.9.17 @github-actions[bot] (#714)
⬆️ Dependency updates
- Bump actions/checkout from 5.0.0 to 6.0.1 @dependabot[bot] (#712)
- Bump actions/setup-node from 6.0.0 to 6.1.0 @dependabot[bot] (#715)