mirror of
https://github.com/astral-sh/setup-uv.git
synced 2025-10-18 16:46:58 +00:00
Some checks failed
CodeQL / Analyze (TypeScript) (push) Failing after 3s
test / lint (push) Failing after 3s
test / test-default-version (ubuntu-latest) (push) Failing after 2s
test / test-specific-version (map[expected-version:0.1.45 resolution-strategy:highest version-input:>=0.1,<0.2]) (push) Failing after 2s
test / test-uv-no-modify-path (push) Failing after 2s
test / test-specific-version (map[expected-version:0.1.0 resolution-strategy:lowest version-input:>=0.1.0,<0.2]) (push) Failing after 1s
test / test-specific-version (map[expected-version:0.3.0 version-input:0.3.0]) (push) Failing after 2s
test / test-specific-version (map[expected-version:0.3.2 version-input:0.3.2]) (push) Failing after 2s
test / test-specific-version (map[expected-version:0.3.5 version-input:0.3.x]) (push) Failing after 2s
test / test-specific-version (map[expected-version:0.3.5 version-input:0.3]) (push) Failing after 2s
test / test-specific-version (map[expected-version:0.4.25 resolution-strategy:lowest version-input:>=0.4.25,<0.5]) (push) Failing after 2s
test / test-specific-version (map[expected-version:0.4.30 version-input:>=0.4.25,<0.5]) (push) Failing after 2s
test / test-latest-version (>=0.8) (push) Failing after 2s
test / test-latest-version (latest) (push) Failing after 2s
test / test-from-working-directory-version (map[expected-version:0.5.14 working-directory:__tests__/fixtures/pyproject-toml-project]) (push) Failing after 2s
test / test-from-working-directory-version (map[expected-version:0.5.15 working-directory:__tests__/fixtures/uv-toml-project]) (push) Failing after 2s
test / test-version-file-version (map[expected-version:0.5.15 version-file:__tests__/fixtures/.tool-versions]) (push) Failing after 2s
test / test-version-file-version (map[expected-version:0.6.17 version-file:__tests__/fixtures/uv-in-requirements-txt-project/requirements.txt]) (push) Failing after 2s
test / test-version-file-version (map[expected-version:0.8.3 version-file:__tests__/fixtures/uv-in-requirements-hash-txt-project/requirements.txt]) (push) Failing after 2s
test / test-malformed-pyproject-file-fallback (push) Failing after 2s
test / test-checksum (map[checksum:4d9279ad5ca596b1e2d703901d508430eb07564dc4d8837de9e2fca9c90f8ecd os:ubuntu-latest]) (push) Failing after 2s
test / test-with-explicit-token (push) Failing after 2s
test / test-uvx (push) Failing after 2s
test / test-tool-install (ubuntu-latest) (push) Failing after 2s
test / test-python-version (ubuntu-latest) (push) Failing after 2s
test / test-activate-environment (ubuntu-latest) (push) Failing after 2s
test / test-setup-cache (auto, ubuntu-latest) (push) Failing after 1s
test / test-setup-cache (false, ubuntu-latest) (push) Failing after 2s
test / test-setup-cache (true, ubuntu-latest) (push) Failing after 2s
test / test-musl (push) Failing after 5s
test / test-setup-cache-requirements-txt (push) Failing after 2s
test / test-restore-cache-requirements-txt (push) Has been skipped
test / test-setup-cache-dependency-glob (push) Failing after 3s
test / test-restore-cache-dependency-glob (push) Has been skipped
test / test-setup-cache-save-cache-false (push) Failing after 4s
test / test-restore-cache-save-cache-false (push) Has been skipped
test / test-setup-cache-restore-cache-false (push) Failing after 5s
test / test-restore-cache-restore-cache-false (push) Has been skipped
test / test-cache-local (map[expected-cache-dir:/home/runner/work/_temp/setup-uv-cache os:ubuntu-latest]) (push) Failing after 5s
test / test-cache-local-cache-disabled (push) Failing after 5s
test / test-no-python-version (push) Failing after 5s
test / test-custom-manifest-file (push) Failing after 5s
test / test-absolute-path (push) Failing after 5s
test / test-relative-path (push) Failing after 5s
test / test-cache-prune-force (push) Failing after 5s
test / test-cache-dir-from-file (push) Failing after 5s
test / test-cache-python-installs (push) Failing after 5s
test / test-restore-python-installs (push) Has been skipped
test / test-python-install-dir (map[expected-python-dir:/home/runner/work/_temp/uv-python-dir os:ubuntu-latest]) (push) Failing after 5s
Release Drafter / ✏️ Draft release (push) Has been cancelled
test / test-tool-install (macos-14) (push) Has been cancelled
test / test-tool-install (macos-latest) (push) Has been cancelled
test / test-tool-install (windows-latest) (push) Has been cancelled
test / test-default-version (macos-14) (push) Has been cancelled
test / test-default-version (macos-latest) (push) Has been cancelled
test / test-default-version (windows-latest) (push) Has been cancelled
test / test-setup-cache (false, selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-checksum (map[checksum:a70cbfbf3bb5c08b2f84963b4f12c94e08fbb2468ba418a3bfe1066fbe9e7218 os:macos-latest]) (push) Has been cancelled
test / test-tilde-expansion-tool-dirs (push) Has been cancelled
test / test-python-version (macos-latest) (push) Has been cancelled
test / test-python-version (windows-latest) (push) Has been cancelled
test / test-activate-environment (macos-latest) (push) Has been cancelled
test / test-activate-environment (windows-latest) (push) Has been cancelled
test / test-setup-cache (auto, selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-setup-cache (auto, windows-latest) (push) Has been cancelled
test / test-setup-cache (false, windows-latest) (push) Has been cancelled
test / test-setup-cache (true, selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-setup-cache (true, windows-latest) (push) Has been cancelled
test / test-cache-local (map[expected-cache-dir:/home/ubuntu/.cache/uv os:selfhosted-ubuntu-arm64]) (push) Has been cancelled
test / test-cache-local (map[expected-cache-dir:D:\a\_temp\setup-uv-cache os:windows-latest]) (push) Has been cancelled
test / test-setup-cache-local (push) Has been cancelled
test / test-tilde-expansion-cache-local-path (push) Has been cancelled
test / test-tilde-expansion-cache-dependency-glob (push) Has been cancelled
test / test-python-install-dir (map[expected-python-dir:/home/ubuntu/.local/share/uv/python os:selfhosted-ubuntu-arm64]) (push) Has been cancelled
test / test-python-install-dir (map[expected-python-dir:D:\a\_temp\uv-python-dir os:windows-latest]) (push) Has been cancelled
test / test-restore-cache (auto, windows-latest) (push) Has been cancelled
test / test-restore-cache (auto, selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-restore-cache (auto, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (false, selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-restore-cache (false, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (false, windows-latest) (push) Has been cancelled
test / test-restore-cache (true, selfhosted-ubuntu-arm64) (push) Has been cancelled
test / test-restore-cache (true, ubuntu-latest) (push) Has been cancelled
test / test-restore-cache (true, windows-latest) (push) Has been cancelled
test / test-restore-cache-local (push) Has been cancelled
test / cleanup-tilde-expansion-tests (push) Has been cancelled
test / all-tests-passed (push) Has been cancelled
190 lines
5.5 KiB
Markdown
190 lines
5.5 KiB
Markdown
# Caching
|
|
|
|
This document covers all caching-related configuration options for setup-uv.
|
|
|
|
## Enable caching
|
|
|
|
> [!NOTE]
|
|
> The cache is pruned before it is uploaded to the GitHub Actions cache. This can lead to
|
|
> a small or empty cache. See [Disable cache pruning](#disable-cache-pruning) for more details.
|
|
|
|
If you enable caching, the [uv cache](https://docs.astral.sh/uv/concepts/cache/) will be uploaded to
|
|
the GitHub Actions cache. This can speed up runs that reuse the cache by several minutes.
|
|
Caching is enabled by default on GitHub-hosted runners.
|
|
|
|
> [!TIP]
|
|
>
|
|
> On self-hosted runners this is usually not needed since the cache generated by uv on the runner's
|
|
> filesystem is not removed after a run. For more details see [Local cache path](#local-cache-path).
|
|
|
|
You can optionally define a custom cache key suffix.
|
|
|
|
```yaml
|
|
- name: Enable caching and define a custom cache key suffix
|
|
id: setup-uv
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-suffix: "optional-suffix"
|
|
```
|
|
|
|
When the cache was successfully restored, the output `cache-hit` will be set to `true` and you can
|
|
use it in subsequent steps. For example, to use the cache in the above case:
|
|
|
|
```yaml
|
|
- name: Do something if the cache was restored
|
|
if: steps.setup-uv.outputs.cache-hit == 'true'
|
|
run: echo "Cache was restored"
|
|
```
|
|
|
|
## Cache dependency glob
|
|
|
|
If you want to control when the GitHub Actions cache is invalidated, specify a glob pattern with the
|
|
`cache-dependency-glob` input. The GitHub Actions cache will be invalidated if any file matching the glob pattern
|
|
changes. If you use relative paths, they are relative to the repository root.
|
|
|
|
> [!NOTE]
|
|
>
|
|
> You can look up supported patterns [here](https://github.com/actions/toolkit/tree/main/packages/glob#patterns)
|
|
>
|
|
> The default is
|
|
> ```yaml
|
|
> cache-dependency-glob: |
|
|
> **/*requirements*.txt
|
|
> **/*requirements*.in
|
|
> **/*constraints*.txt
|
|
> **/*constraints*.in
|
|
> **/pyproject.toml
|
|
> **/uv.lock
|
|
> **/*.py.lock
|
|
> ```
|
|
|
|
```yaml
|
|
- name: Define a cache dependency glob
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: "**/pyproject.toml"
|
|
```
|
|
|
|
```yaml
|
|
- name: Define a list of cache dependency globs
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: |
|
|
**/requirements*.txt
|
|
**/pyproject.toml
|
|
```
|
|
|
|
```yaml
|
|
- name: Define an absolute cache dependency glob
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: "/tmp/my-folder/requirements*.txt"
|
|
```
|
|
|
|
```yaml
|
|
- name: Never invalidate the cache
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-dependency-glob: ""
|
|
```
|
|
|
|
## Restore cache
|
|
|
|
Restoring an existing cache can be enabled or disabled with the `restore-cache` input.
|
|
By default, the cache will be restored.
|
|
|
|
```yaml
|
|
- name: Don't restore an existing cache
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
restore-cache: false
|
|
```
|
|
|
|
## Save cache
|
|
|
|
You can also disable saving the cache after the run with the `save-cache` input.
|
|
This can be useful to save cache storage when you know you will not use the cache of the run again.
|
|
By default, the cache will be saved.
|
|
|
|
```yaml
|
|
- name: Don't save the cache after the run
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
save-cache: false
|
|
```
|
|
|
|
## Local cache path
|
|
|
|
If caching is enabled, this action controls where uv stores its cache on the runner's filesystem
|
|
by setting `UV_CACHE_DIR`.
|
|
|
|
It defaults to `setup-uv-cache` in the `TMP` dir, `D:\a\_temp\setup-uv-cache` on Windows and
|
|
`/tmp/setup-uv-cache` on Linux/macOS. You can change the default by specifying the path with the
|
|
`cache-local-path` input.
|
|
|
|
> [!NOTE]
|
|
> If the environment variable `UV_CACHE_DIR` is already set this action will not override it.
|
|
> If you configured [cache-dir](https://docs.astral.sh/uv/reference/settings/#cache-dir) in your
|
|
> config file then it is also respected and this action will not set `UV_CACHE_DIR`.
|
|
|
|
```yaml
|
|
- name: Define a custom uv cache path
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
cache-local-path: "/path/to/cache"
|
|
```
|
|
|
|
## Disable cache pruning
|
|
|
|
By default, the uv cache is pruned after every run, removing pre-built wheels, but retaining any
|
|
wheels that were built from source. On GitHub-hosted runners, it's typically faster to omit those
|
|
pre-built wheels from the cache (and instead re-download them from the registry on each run).
|
|
However, on self-hosted or local runners, preserving the cache may be more efficient. See
|
|
the [documentation](https://docs.astral.sh/uv/concepts/cache/#caching-in-continuous-integration) for
|
|
more information.
|
|
|
|
If you want to persist the entire cache across runs, disable cache pruning with the `prune-cache`
|
|
input.
|
|
|
|
```yaml
|
|
- name: Don't prune the cache before saving it
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
prune-cache: false
|
|
```
|
|
|
|
## Cache Python installs
|
|
|
|
By default, the Python install dir (`uv python dir` / `UV_PYTHON_INSTALL_DIR`) is not cached,
|
|
for the same reason that the dependency cache is pruned.
|
|
If you want to cache Python installs along with your dependencies, set the `cache-python` input to `true`.
|
|
|
|
```yaml
|
|
- name: Cache Python installs
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
cache-python: true
|
|
```
|
|
|
|
## Ignore nothing to cache
|
|
|
|
By default, the action will fail if caching is enabled but there is nothing to upload (the uv cache directory does not exist).
|
|
If you want to ignore this, set the `ignore-nothing-to-cache` input to `true`.
|
|
|
|
```yaml
|
|
- name: Ignore nothing to cache
|
|
uses: astral-sh/setup-uv@v7
|
|
with:
|
|
enable-cache: true
|
|
ignore-nothing-to-cache: true
|
|
```
|