diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml index 2d4fe4dd7d9cb..a83ca513ed47f 100644 --- a/.github/workflows/build-docs.yml +++ b/.github/workflows/build-docs.yml @@ -6,6 +6,9 @@ on: pull_request: permissions: {} +env: + UV_NO_SYNC: true + jobs: changes: runs-on: ubuntu-latest @@ -55,6 +58,7 @@ jobs: with: version: "latest-known" enable-cache: true + cache-suffix: docs cache-dependency-glob: | pyproject.toml uv.lock @@ -92,6 +96,7 @@ jobs: with: version: "latest-known" enable-cache: true + cache-suffix: docs cache-dependency-glob: | pyproject.toml uv.lock diff --git a/.github/workflows/bump-pre-commit-hooks.yml b/.github/workflows/bump-pre-commit-hooks.yml index 84bb0a73cb419..8ecc91fdad1eb 100644 --- a/.github/workflows/bump-pre-commit-hooks.yml +++ b/.github/workflows/bump-pre-commit-hooks.yml @@ -7,6 +7,9 @@ on: permissions: {} +env: + UV_NO_SYNC: true + jobs: bump-pre-commit-hooks: if: github.repository_owner == 'fastapi' @@ -34,6 +37,11 @@ jobs: cache-dependency-glob: | pyproject.toml uv.lock + cache-suffix: dev-all + # Disable saving cache as we install narrower set of dependencies than dev-all has. + save-cache: false + - name: Install dependencies + run: uv sync --locked --group dev - name: Bump pre-commit hooks run: uv run prek auto-update --freeze --cooldown-days 7 - name: Get PR Submit token diff --git a/.github/workflows/create-draft-release.yml b/.github/workflows/create-draft-release.yml index 7c1f8899fe680..fd1d595542302 100644 --- a/.github/workflows/create-draft-release.yml +++ b/.github/workflows/create-draft-release.yml @@ -7,6 +7,9 @@ on: permissions: {} +env: + UV_NO_SYNC: true + jobs: create-draft-release: if: github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'release') @@ -34,6 +37,14 @@ jobs: uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 with: version: "latest-known" + cache-dependency-glob: | + pyproject.toml + uv.lock + cache-suffix: dev-all + # Disable saving cache as we install narrower set of dependencies than dev-all has. + save-cache: false + - name: Install dependencies + run: uv sync --locked --group dev - name: Extract release details id: release-details run: | diff --git a/.github/workflows/deploy-docs.yml b/.github/workflows/deploy-docs.yml index eef737cfd83b5..43415e1775b35 100644 --- a/.github/workflows/deploy-docs.yml +++ b/.github/workflows/deploy-docs.yml @@ -8,6 +8,9 @@ on: permissions: {} +env: + UV_NO_SYNC: true + jobs: deploy-docs: runs-on: ubuntu-latest diff --git a/.github/workflows/label-approved.yml b/.github/workflows/label-approved.yml index bff7f0d5a97d2..acd42a2f71627 100644 --- a/.github/workflows/label-approved.yml +++ b/.github/workflows/label-approved.yml @@ -7,6 +7,9 @@ on: permissions: {} +env: + UV_NO_SYNC: true + jobs: label-approved: if: github.repository_owner == 'fastapi' @@ -31,6 +34,7 @@ jobs: with: version: "latest-known" enable-cache: true + cache-suffix: github-actions cache-dependency-glob: | pyproject.toml uv.lock diff --git a/.github/workflows/notify-translations.yml b/.github/workflows/notify-translations.yml index adb7f528d2ea9..afe1fddddaf8b 100644 --- a/.github/workflows/notify-translations.yml +++ b/.github/workflows/notify-translations.yml @@ -19,6 +19,9 @@ on: permissions: {} +env: + UV_NO_SYNC: true + jobs: job: runs-on: ubuntu-latest @@ -43,6 +46,7 @@ jobs: with: version: "latest-known" enable-cache: true + cache-suffix: github-actions cache-dependency-glob: | pyproject.toml uv.lock diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index a2388a41ba2b4..361f72d743935 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -6,6 +6,7 @@ permissions: {} env: CAN_PUSH: ${{ github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' }} + UV_NO_SYNC: true jobs: pre-commit: @@ -46,6 +47,7 @@ jobs: uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 with: version: "latest-known" + cache-suffix: dev-all cache-dependency-glob: | pyproject.toml uv.lock diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml index f121edfd4d854..b88bf5fbb17a2 100644 --- a/.github/workflows/prepare-release.yml +++ b/.github/workflows/prepare-release.yml @@ -18,6 +18,9 @@ on: permissions: {} +env: + UV_NO_SYNC: true + jobs: prepare-release: runs-on: ubuntu-latest @@ -44,6 +47,14 @@ jobs: uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 with: version: "latest-known" + cache-dependency-glob: | + pyproject.toml + uv.lock + cache-suffix: dev-all + # Disable saving cache as we install narrower set of dependencies than dev-all has. + save-cache: false + - name: Install dependencies + run: uv sync --locked --group dev - name: Prepare release env: PREPARE_RELEASE_BUMP: ${{ inputs.bump }} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index eb868981ba747..c505a616f4fc0 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -5,6 +5,9 @@ on: types: - published +env: + UV_NO_SYNC: true + permissions: {} jobs: diff --git a/.github/workflows/smokeshow.yml b/.github/workflows/smokeshow.yml index 99bc0064c51d4..29265753c58e2 100644 --- a/.github/workflows/smokeshow.yml +++ b/.github/workflows/smokeshow.yml @@ -7,6 +7,9 @@ on: permissions: {} +env: + UV_NO_SYNC: true + jobs: smokeshow: runs-on: ubuntu-latest @@ -29,6 +32,7 @@ jobs: uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 with: version: "latest-known" + cache-suffix: github-actions cache-dependency-glob: | pyproject.toml uv.lock diff --git a/.github/workflows/sponsors.yml b/.github/workflows/sponsors.yml index b2ec92635970e..4b92cf02d3eb4 100644 --- a/.github/workflows/sponsors.yml +++ b/.github/workflows/sponsors.yml @@ -12,6 +12,9 @@ on: permissions: {} +env: + UV_NO_SYNC: true + jobs: job: if: github.repository_owner == 'fastapi' @@ -37,6 +40,7 @@ jobs: with: version: "latest-known" enable-cache: true + cache-suffix: github-actions cache-dependency-glob: | pyproject.toml uv.lock diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f47296d0ac617..d94858df00253 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -119,6 +119,7 @@ jobs: with: version: "latest-known" enable-cache: true + cache-suffix: tests-${{ matrix.uv-resolution }} cache-dependency-glob: | pyproject.toml uv.lock @@ -181,6 +182,7 @@ jobs: with: version: "latest-known" enable-cache: true + cache-suffix: tests-highest cache-dependency-glob: | pyproject.toml uv.lock @@ -249,6 +251,13 @@ jobs: with: version: "latest-known" enable-cache: true + cache-suffix: tests-highest + # This job checks out into `base/`, so the glob must point there. + cache-dependency-glob: | + base/pyproject.toml + base/uv.lock + # Only ever runs on pull requests, so anything it saved would be PR-scoped and useless. + save-cache: false - name: Run the changed tests against the base code if: steps.changed-tests.outputs.found == 'true' working-directory: base @@ -288,6 +297,7 @@ jobs: with: version: "latest-known" enable-cache: true + cache-suffix: tests-highest cache-dependency-glob: | pyproject.toml uv.lock diff --git a/.github/workflows/topic-repos.yml b/.github/workflows/topic-repos.yml index cf75dd3d5a689..3e840dc795a82 100644 --- a/.github/workflows/topic-repos.yml +++ b/.github/workflows/topic-repos.yml @@ -7,6 +7,9 @@ on: permissions: {} +env: + UV_NO_SYNC: true + jobs: topic-repos: if: github.repository_owner == 'fastapi' @@ -32,6 +35,7 @@ jobs: with: version: "latest-known" enable-cache: true + cache-suffix: github-actions cache-dependency-glob: | pyproject.toml uv.lock diff --git a/.github/workflows/translate.yml b/.github/workflows/translate.yml index f3a1daa16be5f..0a0d773391c85 100644 --- a/.github/workflows/translate.yml +++ b/.github/workflows/translate.yml @@ -38,6 +38,9 @@ on: permissions: {} +env: + UV_NO_SYNC: true + jobs: langs: runs-on: ubuntu-latest @@ -56,6 +59,7 @@ jobs: uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 with: version: "latest-known" + cache-suffix: translations cache-dependency-glob: | pyproject.toml uv.lock @@ -98,6 +102,7 @@ jobs: uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 with: version: "latest-known" + cache-suffix: translations cache-dependency-glob: | pyproject.toml uv.lock diff --git a/.github/workflows/warm-cache.yml b/.github/workflows/warm-cache.yml new file mode 100644 index 0000000000000..b682190c6a648 --- /dev/null +++ b/.github/workflows/warm-cache.yml @@ -0,0 +1,47 @@ +name: Warm Cache + +# Populates the `dev-all` uv cache at default-branch scope so that it could be used by +# `pre-commit.yml` (it has `pull_request` trigger and can't write cache available across PRs) +# and some others that use subset of dev dependencies. + +on: + push: + branches: + - master + paths: + - pyproject.toml + - uv.lock + - .python-version + - .github/workflows/warm-cache.yml + schedule: + - cron: "0 4 * * *" + workflow_dispatch: + +permissions: {} + +jobs: + warm-cache: + if: github.repository_owner == 'fastapi' + runs-on: ubuntu-latest + timeout-minutes: 10 + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - name: Set up Python + uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0 + with: + python-version-file: ".python-version" + - name: Setup uv + id: setup-uv + uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1 + with: + version: "latest-known" + enable-cache: true + cache-suffix: dev-all + cache-dependency-glob: | + pyproject.toml + uv.lock + - name: Populate the cache + if: steps.setup-uv.outputs.cache-hit != 'true' + run: uv sync --locked --group dev --extra all