afd816f3cd
This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [astral-sh/setup-uv](https://redirect.github.com/astral-sh/setup-uv) | action | minor | `v7.3.1` → `v7.5.0` | --- ### Release Notes <details> <summary>astral-sh/setup-uv (astral-sh/setup-uv)</summary> ### [`v7.5.0`](https://redirect.github.com/astral-sh/setup-uv/releases/tag/v7.5.0): 🌈 Use `astral-sh/versions` as version provider [Compare Source](https://redirect.github.com/astral-sh/setup-uv/compare/v7.4.0...v7.5.0) ### 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: ```json {"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 - docs: replace copilot instructions with AGENTS.md [@​eifinger](https://redirect.github.com/eifinger) ([#​794](https://redirect.github.com/astral-sh/setup-uv/issues/794)) #### 🚀 Enhancements - Use astral-sh/versions as primary version provider [@​eifinger](https://redirect.github.com/eifinger) ([#​802](https://redirect.github.com/astral-sh/setup-uv/issues/802)) #### 📚 Documentation - docs: add cross-client dependabot rollup skill [@​eifinger](https://redirect.github.com/eifinger) ([#​793](https://redirect.github.com/astral-sh/setup-uv/issues/793)) ### [`v7.4.0`](https://redirect.github.com/astral-sh/setup-uv/releases/tag/v7.4.0): 🌈 Add riscv64 architecture support to platform detection [Compare Source](https://redirect.github.com/astral-sh/setup-uv/compare/v7.3.1...v7.4.0) ##### Changes Thank you [@​luhenry](https://redirect.github.com/luhenry) for adding support for riscv64 arch ##### 🚀 Enhancements - Add riscv64 architecture support to platform detection [@​luhenry](https://redirect.github.com/luhenry) ([#​791](https://redirect.github.com/astral-sh/setup-uv/issues/791)) ##### 🧰 Maintenance - Delete .github/workflows/dependabot-build.yml [@​eifinger](https://redirect.github.com/eifinger) ([#​789](https://redirect.github.com/astral-sh/setup-uv/issues/789)) - Harden Dependabot build workflow [@​eifinger](https://redirect.github.com/eifinger) ([#​788](https://redirect.github.com/astral-sh/setup-uv/issues/788)) - Fix: check PR author instead of event sender for Dependabot detection [@​eifinger-bot](https://redirect.github.com/eifinger-bot) ([#​787](https://redirect.github.com/astral-sh/setup-uv/issues/787)) - chore: update known checksums for 0.10.9 @​[github-actions\[bot\]](https://redirect.github.com/apps/github-actions) ([#​783](https://redirect.github.com/astral-sh/setup-uv/issues/783)) - Add workflow to auto-build dist on Dependabot PRs [@​eifinger-bot](https://redirect.github.com/eifinger-bot) ([#​782](https://redirect.github.com/astral-sh/setup-uv/issues/782)) - chore: update known checksums for 0.10.8 @​[github-actions\[bot\]](https://redirect.github.com/apps/github-actions) ([#​779](https://redirect.github.com/astral-sh/setup-uv/issues/779)) - chore: update known checksums for 0.10.7 @​[github-actions\[bot\]](https://redirect.github.com/apps/github-actions) ([#​775](https://redirect.github.com/astral-sh/setup-uv/issues/775)) ##### ⬆️ Dependency updates - chore(deps): bump versions [@​eifinger](https://redirect.github.com/eifinger) ([#​792](https://redirect.github.com/astral-sh/setup-uv/issues/792)) - Bump actions/setup-node from 6.2.0 to 6.3.0 @​[dependabot\[bot\]](https://redirect.github.com/apps/dependabot) ([#​790](https://redirect.github.com/astral-sh/setup-uv/issues/790)) - Bump eifinger/actionlint-action from 1.10.0 to 1.10.1 @​[dependabot\[bot\]](https://redirect.github.com/apps/dependabot) ([#​778](https://redirect.github.com/astral-sh/setup-uv/issues/778)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - Between 12:00 AM and 03:59 AM, only on Monday ( * 0-3 * * 1 ) (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/astral-sh/uv). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My41OS4wIiwidXBkYXRlZEluVmVyIjoiNDMuNTkuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiYnVpbGQ6c2tpcC1kb2NrZXIiLCJidWlsZDpza2lwLXJlbGVhc2UiLCJpbnRlcm5hbCJdfQ==--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
267 lines
9.2 KiB
YAML
267 lines
9.2 KiB
YAML
on:
|
|
workflow_call:
|
|
inputs:
|
|
save-rust-cache:
|
|
required: false
|
|
type: string
|
|
default: "true"
|
|
test-macos:
|
|
required: false
|
|
type: string
|
|
default: "false"
|
|
|
|
permissions: {}
|
|
|
|
env:
|
|
CARGO_INCREMENTAL: 0
|
|
CARGO_NET_RETRY: 10
|
|
CARGO_TERM_COLOR: always
|
|
PYTHON_VERSION: "3.12"
|
|
RUSTUP_MAX_RETRIES: 10
|
|
|
|
jobs:
|
|
# We use the large GitHub actions runners
|
|
# For Ubuntu and Windows, this requires Organization-level configuration
|
|
# See: https://docs.github.com/en/actions/using-github-hosted-runners/about-larger-runners/about-larger-runners#about-ubuntu-and-windows-larger-runners
|
|
|
|
cargo-test-linux:
|
|
timeout-minutes: 10
|
|
runs-on: depot-ubuntu-24.04-16
|
|
name: "cargo test on linux"
|
|
steps:
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: "Install mold"
|
|
run: ./scripts/install-mold.sh
|
|
|
|
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
|
|
with:
|
|
save-if: ${{ inputs.save-rust-cache == 'true' }}
|
|
|
|
- name: "Install Rust toolchain"
|
|
run: rustup show
|
|
|
|
- uses: astral-sh/setup-uv@e06108dd0aef18192324c70427afc47652e63a82 # v7.5.0
|
|
with:
|
|
version: "0.10.9"
|
|
|
|
- name: "Install required Python versions"
|
|
run: uv python install
|
|
|
|
- name: "Install secret service"
|
|
run: |
|
|
sudo apt update -y
|
|
sudo apt install -y gnome-keyring
|
|
|
|
- name: "Start gnome-keyring"
|
|
# run gnome-keyring with 'foobar' as password for the login keyring
|
|
# this will create a new login keyring and unlock it
|
|
# the login password doesn't matter, but the keyring must be unlocked for the tests to work
|
|
run: gnome-keyring-daemon --components=secrets --daemonize --unlock <<< 'foobar'
|
|
|
|
- name: "Create btrfs filesystem"
|
|
run: |
|
|
sudo apt-get install -y btrfs-progs
|
|
truncate -s 1G /tmp/btrfs.img
|
|
mkfs.btrfs /tmp/btrfs.img
|
|
sudo mkdir /btrfs
|
|
sudo mount -o loop /tmp/btrfs.img /btrfs
|
|
sudo chown "$(id -u):$(id -g)" /btrfs
|
|
|
|
- name: "Create tmpfs filesystem"
|
|
run: |
|
|
sudo mkdir /tmpfs
|
|
sudo mount -t tmpfs -o size=256m tmpfs /tmpfs
|
|
sudo chown "$(id -u):$(id -g)" /tmpfs
|
|
|
|
- name: "Create minix filesystem (low hardlink limit)"
|
|
run: |
|
|
truncate -s 16M /tmp/minix.img
|
|
mkfs.minix /tmp/minix.img
|
|
sudo mkdir /minix
|
|
sudo mount -o loop /tmp/minix.img /minix
|
|
sudo chown "$(id -u):$(id -g)" /minix
|
|
|
|
- name: "Install cargo nextest"
|
|
uses: taiki-e/install-action@d6e286fa45544157a02d45a43742857ebbc25d12 # v2.68.16
|
|
with:
|
|
tool: cargo-nextest
|
|
|
|
- name: "Cargo test"
|
|
env:
|
|
# Retry more than default to reduce flakes in CI
|
|
UV_HTTP_RETRIES: 5
|
|
RUST_BACKTRACE: 1
|
|
UV_INTERNAL__TEST_COW_FS: /btrfs
|
|
UV_INTERNAL__TEST_NOCOW_FS: /tmpfs
|
|
UV_INTERNAL__TEST_ALT_FS: /tmpfs
|
|
UV_INTERNAL__TEST_LOWLINKS_FS: /minix
|
|
# Write pending snapshots to a separate directory for artifact upload
|
|
INSTA_UPDATE: new
|
|
INSTA_PENDING_DIR: ${{ github.workspace }}/pending-snapshots
|
|
run: |
|
|
cargo nextest run \
|
|
--cargo-profile fast-build \
|
|
--features test-python-patch,native-auth,secret-service \
|
|
--workspace \
|
|
--profile ci-linux
|
|
|
|
- name: "Upload pending snapshots"
|
|
if: ${{ failure() }}
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
with:
|
|
name: pending-snapshots-linux
|
|
path: pending-snapshots/
|
|
if-no-files-found: ignore
|
|
include-hidden-files: true
|
|
retention-days: 14
|
|
|
|
cargo-test-macos:
|
|
timeout-minutes: 20
|
|
# Only run macOS tests on main without opt-in
|
|
if: ${{ inputs.test-macos == 'true' }}
|
|
runs-on: depot-macos-14
|
|
name: "cargo test on macos"
|
|
steps:
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
|
|
with:
|
|
save-if: ${{ inputs.save-rust-cache == 'true' }}
|
|
|
|
- name: "Install Rust toolchain"
|
|
run: rustup show
|
|
|
|
- name: "Create HFS+ disk image (no reflink support)"
|
|
run: |
|
|
hdiutil create -size 256m -fs HFS+ -volname NoReflink /tmp/noreflink.dmg
|
|
hdiutil attach /tmp/noreflink.dmg
|
|
echo "HFS_MOUNT=/Volumes/NoReflink" >> "$GITHUB_ENV"
|
|
|
|
- uses: astral-sh/setup-uv@e06108dd0aef18192324c70427afc47652e63a82 # v7.5.0
|
|
with:
|
|
version: "0.10.9"
|
|
|
|
- name: "Install required Python versions"
|
|
run: uv python install
|
|
|
|
- name: "Install cargo nextest"
|
|
uses: taiki-e/install-action@d6e286fa45544157a02d45a43742857ebbc25d12 # v2.68.16
|
|
with:
|
|
tool: cargo-nextest
|
|
|
|
- name: "Cargo test"
|
|
env:
|
|
# Retry more than default to reduce flakes in CI
|
|
UV_HTTP_RETRIES: 5
|
|
RUST_BACKTRACE: 1
|
|
# macOS tmpdir is on APFS which supports reflink
|
|
UV_INTERNAL__TEST_COW_FS: ${{ runner.temp }}
|
|
# HFS+ RAM disk does not support copy-on-write and is on a different device
|
|
UV_INTERNAL__TEST_NOCOW_FS: ${{ env.HFS_MOUNT }}
|
|
UV_INTERNAL__TEST_ALT_FS: ${{ env.HFS_MOUNT }}
|
|
# Write pending snapshots to a separate directory for artifact upload
|
|
INSTA_UPDATE: new
|
|
INSTA_PENDING_DIR: ${{ github.workspace }}/pending-snapshots
|
|
run: |
|
|
cargo nextest run \
|
|
--cargo-profile fast-build \
|
|
--no-default-features \
|
|
--features test-python,test-python-managed,test-pypi,test-git,test-git-lfs,performance,test-crates-io,native-auth,apple-native \
|
|
--workspace \
|
|
--profile ci-macos
|
|
|
|
- name: "Upload pending snapshots"
|
|
if: ${{ failure() }}
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
with:
|
|
name: pending-snapshots-macos
|
|
path: pending-snapshots/
|
|
if-no-files-found: ignore
|
|
include-hidden-files: true
|
|
retention-days: 14
|
|
|
|
cargo-test-windows:
|
|
timeout-minutes: 15
|
|
runs-on: github-windows-2025-x86_64-16
|
|
name: "cargo test on windows ${{ matrix.partition }} of 3"
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
partition: [1, 2, 3]
|
|
steps:
|
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Setup Dev Drive
|
|
run: ${{ github.workspace }}/.github/workflows/setup-dev-drive.ps1
|
|
|
|
# actions/checkout does not let us clone into anywhere outside ${{ github.workspace }}, so we have to copy the clone...
|
|
- name: Copy Git Repo to Dev Drive
|
|
run: |
|
|
Copy-Item -Path "${{ github.workspace }}" -Destination "$Env:UV_WORKSPACE" -Recurse
|
|
|
|
- uses: astral-sh/setup-uv@e06108dd0aef18192324c70427afc47652e63a82 # v7.5.0
|
|
with:
|
|
version: "0.10.9"
|
|
|
|
- name: "Install required Python versions"
|
|
run: uv python install
|
|
|
|
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2
|
|
with:
|
|
workspaces: ${{ env.UV_WORKSPACE }}
|
|
# Use the same cache entry across the partitions
|
|
add-job-id-key: false
|
|
save-if: ${{ inputs.save-rust-cache == 'true' }}
|
|
|
|
- name: "Install Rust toolchain"
|
|
working-directory: ${{ env.UV_WORKSPACE }}
|
|
run: rustup show
|
|
|
|
- name: "Create NTFS test directory (low hardlink limit)"
|
|
run: New-Item -Path "C:\uv" -ItemType Directory -Force
|
|
|
|
- name: "Install cargo nextest"
|
|
uses: taiki-e/install-action@d6e286fa45544157a02d45a43742857ebbc25d12 # v2.68.16
|
|
with:
|
|
tool: cargo-nextest
|
|
|
|
- name: "Cargo test"
|
|
working-directory: ${{ env.UV_WORKSPACE }}
|
|
env:
|
|
# Retry more than default to reduce flakes in CI
|
|
UV_HTTP_RETRIES: 5
|
|
# Avoid permission errors during concurrent tests
|
|
# See https://github.com/astral-sh/uv/issues/6940
|
|
UV_LINK_MODE: copy
|
|
RUST_BACKTRACE: 1
|
|
UV_INTERNAL__TEST_LOWLINKS_FS: "C:\\uv"
|
|
# Write pending snapshots to a separate directory for artifact upload
|
|
INSTA_UPDATE: new
|
|
INSTA_PENDING_DIR: ${{ github.workspace }}/pending-snapshots
|
|
shell: bash
|
|
run: |
|
|
cargo nextest run \
|
|
--cargo-profile fast-build \
|
|
--no-default-features \
|
|
--features test-python,test-pypi,test-python-managed,native-auth,windows-native \
|
|
--workspace \
|
|
--profile ci-windows \
|
|
--partition hash:${{ matrix.partition }}/3
|
|
|
|
- name: "Upload pending snapshots"
|
|
if: ${{ failure() }}
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
|
with:
|
|
name: pending-snapshots-windows-${{ matrix.partition }}
|
|
path: pending-snapshots/
|
|
if-no-files-found: ignore
|
|
include-hidden-files: true
|
|
retention-days: 14
|