From 6f277f7246b8ad82e394d9f3966704f61f6ffc4f Mon Sep 17 00:00:00 2001 From: Roman Kharitonov Date: Mon, 31 Aug 2026 01:22:40 +1000 Subject: [PATCH] Update GitHub Actions off the deprecated Node.js 20 runtime Every action in the workflow targeted Node.js 20, which GitHub deprecated; runs were already being force-migrated to Node.js 24 with a warning on every job. - actions/checkout v4 -> v7 - actions/setup-python v5 -> v7 - actions/cache v4 -> v6 - actions/upload-artifact v4 -> v7 - actions/download-artifact v4 -> v8 - codecov/codecov-action v5 -> v7 - softprops/action-gh-release v2 -> v3 - astral-sh/setup-uv v5 -> v10.0.1 setup-uv is pinned to an exact version because it stopped publishing major and minor tags in v8; astral-sh/setup-uv@v10 does not resolve. Every input the workflow passes still exists in the target versions. The breaking change in download-artifact v5 only affects downloads by artifact ID, while the release job downloads all artifacts at once, so the extracted layout is unchanged. Co-Authored-By: Claude Opus 5 --- .github/workflows/ci.yml | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cac946b..939e704 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,13 +17,14 @@ jobs: runs-on: ${{ matrix.os }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v7 + # setup-uv stopped publishing major and minor tags in v8, pin the exact version - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v10.0.1 - name: Setup Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v7 with: python-version: '3.12' architecture: x64 @@ -44,14 +45,14 @@ jobs: run: uv run pytest -m "" --cov=src --cov-branch --cov-report=term-missing --cov-report=xml --cov-fail-under=100 --junitxml=junit.xml -o junit_family=legacy - name: Upload coverage to Codecov - uses: codecov/codecov-action@v5 + uses: codecov/codecov-action@v7 with: token: ${{ secrets.CODECOV_TOKEN }} files: coverage.xml - name: Upload test results to Codecov if: ${{ !cancelled() }} - uses: codecov/codecov-action@v5 + uses: codecov/codecov-action@v7 with: token: ${{ secrets.CODECOV_TOKEN }} report_type: test_results @@ -62,13 +63,13 @@ jobs: runs-on: windows-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v10.0.1 - name: Setup Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v7 with: python-version: '3.12' architecture: x64 @@ -77,7 +78,7 @@ jobs: run: uv sync - name: Cache Nuitka - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: | ~\AppData\Local\Nuitka @@ -93,7 +94,7 @@ jobs: run: Compress-Archive -Path build\snapjaw\* -DestinationPath snapjaw-windows-x86_64.zip - name: Upload artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: snapjaw-windows-x86_64 path: snapjaw-windows-x86_64.zip @@ -103,13 +104,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v7 - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v10.0.1 - name: Setup Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v7 with: python-version: '3.12' architecture: x64 @@ -118,7 +119,7 @@ jobs: run: uv sync - name: Cache Nuitka - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: | ~/.cache/Nuitka @@ -133,7 +134,7 @@ jobs: tar czf snapjaw-linux-x86_64.tar.gz snapjaw - name: Upload artifact - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: snapjaw-linux-x86_64 path: snapjaw-linux-x86_64.tar.gz @@ -144,7 +145,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Download artifacts - uses: actions/download-artifact@v4 + uses: actions/download-artifact@v8 - name: Get date id: date @@ -158,7 +159,7 @@ jobs: mv snapjaw-linux-x86_64/snapjaw-linux-x86_64.tar.gz snapjaw-${VERSION}-linux-x86_64.tar.gz - name: Release - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v3 with: tag_name: ${{ steps.date.outputs.date }}.${{ github.run_number }} name: ${{ steps.date.outputs.date }}.${{ github.run_number }}