From 158a3836a177d762a3907186983f34764222831a Mon Sep 17 00:00:00 2001 From: maziggy Date: Tue, 26 May 2026 12:45:04 +0200 Subject: [PATCH] ci: bump actions to Node-24-compatible majors GitHub forces Node-20 actions to run on Node 24 starting 2026-06-02 and removes Node 20 from the runner on 2026-09-16. Bumping each action to its first Node-24 major now gets us ahead of both deadlines and silences the deprecation warnings already firing in every CI run. Bumps (across ci.yml, security.yml, codeql.yml, auto-label-area.yml, issue-closed.yml, stale.yml): - actions/checkout v4 -> v6 - actions/setup-python v5 -> v6 - actions/setup-node v4 -> v6 - actions/cache v4 -> v5 - actions/upload-artifact v4 -> v7 - actions/github-script v7 -> v9 - actions/stale v9 -> v10 - docker/setup-buildx v3 -> v4 - docker/build-push v5 -> v7 Verified each major's breaking-change notes against our usage: - setup-node v6 limits auto-cache to npm only; we already pass cache: 'npm' explicitly, so nothing changes. - github-script v9 drops require('@actions/github'); none of our scripts use it (only require('fs') and the injected github/context globals). - setup-buildx v4 removes deprecated inputs; we call it with no inputs. - build-push v6 enables build summaries by default; informational, can disable via DOCKER_BUILD_SUMMARY=false env if it gets noisy. codeql-action stays on v4 (already runs on Node 24). Trivy and github-repo-stats are Docker actions and aren't affected by the Node-20 deprecation. --- .github/workflows/auto-label-area.yml | 2 +- .github/workflows/ci.yml | 42 +++++++++++++-------------- .github/workflows/codeql.yml | 2 +- .github/workflows/issue-closed.yml | 2 +- .github/workflows/security.yml | 22 +++++++------- .github/workflows/stale.yml | 2 +- 6 files changed, 36 insertions(+), 36 deletions(-) diff --git a/.github/workflows/auto-label-area.yml b/.github/workflows/auto-label-area.yml index c514e0a30..638122753 100644 --- a/.github/workflows/auto-label-area.yml +++ b/.github/workflows/auto-label-area.yml @@ -28,7 +28,7 @@ jobs: if: github.event.issue.pull_request == null steps: - name: Apply area:* label from Area dropdown - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const body = context.payload.issue.body || ''; diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5bf8e925a..a474ee856 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,10 +34,10 @@ jobs: runs-on: ubuntu-latest if: github.event_name == 'push' || github.event.pull_request.user.login != github.repository_owner steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ env.PYTHON_VERSION }} @@ -56,10 +56,10 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.user.login != github.repository_owner continue-on-error: true steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ env.PYTHON_VERSION }} @@ -96,15 +96,15 @@ jobs: matrix: shard: [1, 2, 3, 4] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ env.PYTHON_VERSION }} - name: Cache pip - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ~/.cache/pip key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt') }} @@ -143,10 +143,10 @@ jobs: runs-on: ubuntu-latest if: github.event_name == 'push' || github.event.pull_request.user.login != github.repository_owner steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' @@ -166,10 +166,10 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.user.login != github.repository_owner continue-on-error: true steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' @@ -211,10 +211,10 @@ jobs: runs-on: ubuntu-latest if: github.event_name == 'push' || github.event.pull_request.user.login != github.repository_owner steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' @@ -234,10 +234,10 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.user.login != github.repository_owner needs: [frontend-lint, frontend-typecheck] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' @@ -258,10 +258,10 @@ jobs: if: github.event_name == 'push' || github.event.pull_request.user.login != github.repository_owner needs: [frontend-tests] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' @@ -296,17 +296,17 @@ jobs: matrix: shard: [1, 2, 3, 4] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 # Build the backend-test image with GHA BuildKit cache backend so # the pip-install layer is shared across the 4 matrix shards AND # across CI runs. First run on a given requirements.txt is cold # (~60-90s); subsequent runs are ~5-10s. - name: Build backend test image (cached) - uses: docker/build-push-action@v5 + uses: docker/build-push-action@v7 with: context: . file: Dockerfile.test @@ -336,7 +336,7 @@ jobs: timeout-minutes: 20 needs: [backend-tests, frontend-build] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 # Test 1: Docker Build - name: Build production image diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 35b606ba6..cf541962b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -23,7 +23,7 @@ jobs: language: [python, javascript-typescript, actions] steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Initialize CodeQL uses: github/codeql-action/init@v4 diff --git a/.github/workflows/issue-closed.yml b/.github/workflows/issue-closed.yml index 31f2e607b..0428cd020 100644 --- a/.github/workflows/issue-closed.yml +++ b/.github/workflows/issue-closed.yml @@ -12,7 +12,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Remove feedback label - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const issue = context.payload.issue; diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml index 7033440ab..41b07f726 100644 --- a/.github/workflows/security.yml +++ b/.github/workflows/security.yml @@ -43,10 +43,10 @@ jobs: contents: read security-events: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ env.PYTHON_VERSION }} @@ -71,7 +71,7 @@ jobs: contents: read security-events: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Build Docker image run: docker build -t bambuddy:security-scan . @@ -116,10 +116,10 @@ jobs: contents: read issues: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v6 with: python-version: ${{ env.PYTHON_VERSION }} @@ -146,7 +146,7 @@ jobs: - name: Upload audit results if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: pip-audit-results path: pip-audit-results.json @@ -154,7 +154,7 @@ jobs: - name: Create or close pip security issue if: always() && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); @@ -271,10 +271,10 @@ jobs: contents: read issues: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Set up Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: node-version: ${{ env.NODE_VERSION }} cache: 'npm' @@ -321,7 +321,7 @@ jobs: - name: Upload audit results if: always() - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: npm-audit-results path: frontend/npm-audit-results.json @@ -329,7 +329,7 @@ jobs: - name: Create or close npm security issue if: always() && (github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') - uses: actions/github-script@v7 + uses: actions/github-script@v9 with: script: | const fs = require('fs'); diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 7bdc599d8..be7207322 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -11,7 +11,7 @@ jobs: stale: runs-on: ubuntu-latest steps: - - uses: actions/stale@v9 + - uses: actions/stale@v10 with: stale-issue-message: 'This issue has been marked as stale due to inactivity. It will be closed in 7 days if there is no further activity.' close-issue-message: 'Closed due to inactivity. Feel free to reopen if this is still relevant.'