4beb0eca42
chore: update known checksums for 0.4.7 Co-authored-by: eifinger <1481961+eifinger@users.noreply.github.com> |
||
---|---|---|
__tests__ | ||
.github | ||
dist | ||
src | ||
.editorconfig | ||
.eslintignore | ||
.eslintrc.json | ||
.gitattributes | ||
.gitignore | ||
.prettierignore | ||
.prettierrc.json | ||
action.yml | ||
CODEOWNERS | ||
jest.config.js | ||
LICENSE | ||
package-lock.json | ||
package.json | ||
README.md | ||
tsconfig.json |
setup-uv
Set up your GitHub Actions workflow with a specific version of uv.
- Install a version of uv and add it to PATH
- Cache the installed version of uv to speed up consecutive runs on self-hosted runners
- Register problem matchers for error output
- (Optional) Persist the uv's cache in the GitHub Actions Cache
- (Optional) Verify the checksum of the downloaded uv executable
Contents
Usage
Install the latest version (default)
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v2
with:
version: "latest"
For an example workflow, see here.
Tip
Using
latest
requires that uv download the executable on every run, which incurs a cost (especially on self-hosted runners). As a best practice, consider pinning the version to a specific release.
Install a specific version
- name: Install a specific version of uv
uses: astral-sh/setup-uv@v2
with:
version: "0.4.4"
Validate checksum
You can also specify a checksum to validate the downloaded file. Checksums up to the default version are automatically verified by this action. The sha265 hashes can be found on the releases page of the uv repo.
- name: Install a specific version and validate the checksum
uses: astral-sh/setup-uv@v2
with:
version: "0.3.1"
checksum: "e11b01402ab645392c7ad6044db63d37e4fd1e745e015306993b07695ea5f9f8"
Enable caching
If you enable caching, the uv cache will be cached to the GitHub Actions Cache. This can speed up runs that reuse the cache by several minutes. The cache will always be reused on self-hosted runners.
You can optionally define a custom cache key suffix.
- name: Enable caching and define a custom cache key suffix
id: setup-uv
uses: astral-sh/setup-uv@v2
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:
- name: Do something if the cache was restored
if: steps.setup-uv.outputs.cache-hit == 'true'
run: echo "Cache was restored"
Local cache path
If you want to save the cache to a local path other than the default path (/tmp/setup-uv-cache
),
specify the path with the cache-local-path
input.
- name: Define a custom uv cache path
uses: astral-sh/setup-uv@v2
with:
enable-cache: true
cache-local-path: "/path/to/cache"
Cache dependency glob
If you want to control when the cache is invalidated, specify a glob pattern with the
cache-dependency-glob
input. The cache will be invalidated if any file matching the glob pattern
changes. The glob matches files relative to the repository root.
- name: Define a cache dependency glob
uses: astral-sh/setup-uv@v2
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
- name: Define a cache dependency glob
uses: astral-sh/setup-uv@v2
with:
enable-cache: true
cache-dependency-glob: "**requirements*.txt"
- name: Define a list of cache dependency globs
uses: astral-sh/setup-uv@v1
with:
enable-cache: true
cache-dependency-glob: |
'**requirements*.txt'
'**pyproject.toml'
API rate limit
To avoid hitting the API rate limit exceeded
error, supply a GitHub token via the github-token
input.
- name: Install uv and supply a GitHub token
uses: astral-sh/setup-uv@v2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
How it works
This action downloads uv from the uv repo's official GitHub Releases and uses the GitHub Actions Toolkit to cache it as a tool to speed up consecutive runs on self-hosted runners.
The installed version of uv is then added to the runner PATH, enabling subsequent steps to invoke it
by name (uv
).
FAQ
Do I still need actions/setup-python
alongside setup-uv
?
No. This action is modelled as a drop-in replacement for actions/setup-python
when using uv. With
setup-uv
, you can install a specific version of Python using uv python install
rather than
relying on actions/setup-python
.
For example:
- name: Checkout the repository
uses: actions/checkout@main
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v2
with:
enable-cache: true
- name: Test
run: uv run --frozen pytest
To install a specific version of Python, use
uv python install
:
- name: Install the latest version of uv
uses: astral-sh/setup-uv@v2
with:
enable-cache: true
- name: Install Python 3.12
run: uv python install 3.12
What is the default version?
By default, this action installs the latest version of uv.
If you require the installed version in subsequent steps of your workflow, use the uv-version
output:
- name: Checkout the repository
uses: actions/checkout@main
- name: Install the default version of uv
id: setup-uv
uses: astral-sh/setup-uv@v2
- name: Print the installed version
run: echo "Installed uv version is ${{ steps.setup-uv.outputs.uv-version }}"
Acknowledgements
setup-uv
was initially written and published by Kevin Stillhammer
before moving under the official Astral GitHub organization. You can
support Kevin's work in open source on Buy me a coffee or
PayPal.
License
MIT