From c5d047000bcc172b0ffe9d668f899317767dca30 Mon Sep 17 00:00:00 2001 From: Bill Stumbo Date: Thu, 12 Mar 2026 23:46:19 -0400 Subject: [PATCH 1/8] Update Actions to latest version. Updates to actions to ensure they support node.js 24. GHA will default to this version of node.js in June 2026. This update will fix the following warning message: ``` Node.js 20 actions are deprecated. The following actions are running on Node.js 20 and may not work as expected: actions/cache/restore@v4, fjogeleit/http-request-action@v1. Actions will be forced to run with Node.js 24 by default starting June 2nd, 2026. Please check if updated versions of these actions are available that support Node.js 24. To opt into Node.js 24 now, set the FORCE_JAVASCRIPT_ACTIONS_TO_NODE24=true environment variable on the runner or in your workflow file. Once Node.js 24 becomes the default, you can temporarily opt out by setting ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION=true. For more information see: https://github.blog/changelog/2025-09-19-deprecation-of-node-20-on-github-actions-runners/ ``` --- .github/workflows/gh-pages.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 618f3599..f38246f7 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -49,6 +49,8 @@ env: # Specify the deployment environment: staging or production HUGO_ENVIRONMENT: ${{ vars.HUGO_ENVIRONMENT || 'staging' }} HUGO_VERSION: 0.155.3 + # Temporary to validate Node.js 24 works correctly + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true jobs: # ---------------------------------------------------------------------------- @@ -65,14 +67,14 @@ jobs: - name: Get Zotero Version Information id: zoteroVersion - uses: fjogeleit/http-request-action@v1 + uses: fjogeleit/http-request-action@v2 with: url: https://api.zotero.org/groups/2914042/items?format=versions method: GET - name: Cache Zotero Bibliography id: cache-zotero - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5.0.3 with: lookup-only: true path: | @@ -87,7 +89,7 @@ jobs: if: github.event_name == 'push' || github.event_name == 'pull_request' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Check Hugo version consistency run: | @@ -121,14 +123,14 @@ jobs: if: always() && (github.event_name == 'push' || github.event_name == 'pull_request' || needs.check.outputs.cacheHit != 'true') && (needs.validate-docs.result == 'success' || needs.validate-docs.result == 'skipped') && (needs.check.result == 'success' || needs.check.result == 'skipped') runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: submodules: recursive fetch-depth: 0 - name: Cache Zotero Bibliography id: cache-bib - uses: actions/cache@v4 + uses: actions/cache@v5.0.3 with: path: | static/data/bibliography.json @@ -157,9 +159,9 @@ jobs: uses: actions/configure-pages@v5 - name: Setup Node - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 with: - node-version: 18 + node-version: 24 - run: npm install -g autoprefixer --save-dev - run: npm install -g postcss-cli --save-dev @@ -172,7 +174,7 @@ jobs: run: hugo --cleanDestinationDir -e $HUGO_ENVIRONMENT - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + uses: actions/upload-pages-artifact@v4 with: path: ./public From 5b82de3668fa9fabc43867c889fff6e871fbb059 Mon Sep 17 00:00:00 2001 From: Bill Stumbo Date: Fri, 13 Mar 2026 07:34:08 -0400 Subject: [PATCH 2/8] Replace GHA fjogeleit/http-request-action with curl http-request-action uses url.parse() which is being deprecated. Instead of waiting and hoping it is updated this replaces it and removes a dependency on node.js. --- .github/workflows/gh-pages.yml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index f38246f7..aa9b5809 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -59,7 +59,7 @@ jobs: # check: outputs: - zoteroVersion: ${{ fromJson(steps.zoteroVersion.outputs.headers).last-modified-version }} + zoteroVersion: ${{ steps.zoteroVersion.outputs.version }} cacheHit: ${{ steps.cache-zotero-bib.outputs.cache-hit }} runs-on: ubuntu-latest @@ -67,11 +67,13 @@ jobs: - name: Get Zotero Version Information id: zoteroVersion - uses: fjogeleit/http-request-action@v2 - with: - url: https://api.zotero.org/groups/2914042/items?format=versions - method: GET - + run: | + VERSION=$(curl -sI "https://api.zotero.org/groups/2914042/items?format=versions" \ + | grep -i "last-modified-version" \ + | cut -d: -f2 \ + | tr -d '\r ' ) + echo "version=$VERSION" >> $GITHUB_OUTPUT + - name: Cache Zotero Bibliography id: cache-zotero uses: actions/cache/restore@v5.0.3 From ecbd7fe854b4e3398193b7ded5e332b355da15ae Mon Sep 17 00:00:00 2001 From: Bill Stumbo Date: Fri, 13 Mar 2026 07:43:04 -0400 Subject: [PATCH 3/8] Fix reference, previous update changed this --- .github/workflows/gh-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index aa9b5809..33f03afc 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -81,7 +81,7 @@ jobs: lookup-only: true path: | content/en/history/bibliography - key: bib-${{ fromJson(steps.zoteroVersion.outputs.headers).last-modified-version }} + key: bib-${{ steps.zoteroVersion.outputs.version }} # ---------------------------------------------------------------------------- # Validate that README.md references the correct Hugo version. From 6c5adb6e4146c55fcf14c0c285ddfc72c6d5024a Mon Sep 17 00:00:00 2001 From: Bill Stumbo Date: Fri, 13 Mar 2026 08:30:04 -0400 Subject: [PATCH 4/8] CLeanup changes suggested by Copilot Fixes a couple minor issues: - TZ specified incorrectly - Add concurrency group to prevent parallel deployments - Cleaned up npm install and adding caching - Fix incorrect ID reference - Switch from v5.0.3 to v5 for cache actions to automatically get security updates. --- .github/workflows/gh-pages.yml | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 33f03afc..4aab62cc 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -40,6 +40,10 @@ permissions: pages: write id-token: write +concurrency: + group: pages-${{ github.ref }} + cancel-in-progress: true + defaults: run: shell: bash @@ -60,7 +64,7 @@ jobs: check: outputs: zoteroVersion: ${{ steps.zoteroVersion.outputs.version }} - cacheHit: ${{ steps.cache-zotero-bib.outputs.cache-hit }} + cacheHit: ${{ steps.cache-zotero.outputs.cache-hit }} runs-on: ubuntu-latest steps: @@ -76,7 +80,7 @@ jobs: - name: Cache Zotero Bibliography id: cache-zotero - uses: actions/cache/restore@v5.0.3 + uses: actions/cache/restore@v5 with: lookup-only: true path: | @@ -132,7 +136,7 @@ jobs: - name: Cache Zotero Bibliography id: cache-bib - uses: actions/cache@v5.0.3 + uses: actions/cache@v5 with: path: | static/data/bibliography.json @@ -164,15 +168,17 @@ jobs: uses: actions/setup-node@v6 with: node-version: 24 - - - run: npm install -g autoprefixer --save-dev - - run: npm install -g postcss-cli --save-dev - - run: npm install --verbose + cache: 'npm' + + - name: Install dependencies + run: | + npm install -g autoprefixer postcss-cli + npm install - name: Build env: HUGO_CACHEDIR: ${{ runner.temp }}/hugo_cache - TZ: America/New York + TZ: America/New_York run: hugo --cleanDestinationDir -e $HUGO_ENVIRONMENT - name: Upload artifact From 51889626317ed2bdae7591f4950e0d8391954196 Mon Sep 17 00:00:00 2001 From: Paolo Amoroso Date: Fri, 13 Mar 2026 14:23:11 +0100 Subject: [PATCH 5/8] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Paolo Amoroso --- .github/workflows/gh-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 4aab62cc..50625332 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -54,7 +54,7 @@ env: HUGO_ENVIRONMENT: ${{ vars.HUGO_ENVIRONMENT || 'staging' }} HUGO_VERSION: 0.155.3 # Temporary to validate Node.js 24 works correctly - FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true + jobs: # ---------------------------------------------------------------------------- From 046cc2dbe96b1d7cb1168e9b441a350684b089ca Mon Sep 17 00:00:00 2001 From: Paolo Amoroso Date: Fri, 13 Mar 2026 14:23:21 +0100 Subject: [PATCH 6/8] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Paolo Amoroso --- .github/workflows/gh-pages.yml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 50625332..e06ec3a1 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -72,11 +72,16 @@ jobs: - name: Get Zotero Version Information id: zoteroVersion run: | - VERSION=$(curl -sI "https://api.zotero.org/groups/2914042/items?format=versions" \ + set -euo pipefail + VERSION=$(curl -fsSLI "https://api.zotero.org/groups/2914042/items?format=versions" \ | grep -i "last-modified-version" \ | cut -d: -f2 \ - | tr -d '\r ' ) - echo "version=$VERSION" >> $GITHUB_OUTPUT + | tr -d $'\r ' ) + if [[ -z "${VERSION:-}" ]]; then + echo "Error: Failed to determine Zotero Last-Modified-Version from API response." >&2 + exit 1 + fi + echo "version=$VERSION" >> "$GITHUB_OUTPUT" - name: Cache Zotero Bibliography id: cache-zotero From 48943c6f624d8be06a7caa75c292acfefa54c20f Mon Sep 17 00:00:00 2001 From: Paolo Amoroso Date: Fri, 13 Mar 2026 14:23:28 +0100 Subject: [PATCH 7/8] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Paolo Amoroso --- .github/workflows/gh-pages.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index e06ec3a1..ca38480d 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -177,8 +177,7 @@ jobs: - name: Install dependencies run: | - npm install -g autoprefixer postcss-cli - npm install + npm ci - name: Build env: From a96e79addb1019ed56a91bd5ba0dbda2aeaf2e8e Mon Sep 17 00:00:00 2001 From: Bill Stumbo Date: Fri, 13 Mar 2026 22:03:08 -0400 Subject: [PATCH 8/8] Revert removal of FORCE_JAVASCRIPT_TO_NODE24 I want to keep this flag in the file until I'm ready to merge into main. As I make updates and validate them on my staging site I want to be sure the changes work on node.js 24. --- .github/workflows/gh-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index ca38480d..e4961abb 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -54,7 +54,7 @@ env: HUGO_ENVIRONMENT: ${{ vars.HUGO_ENVIRONMENT || 'staging' }} HUGO_VERSION: 0.155.3 # Temporary to validate Node.js 24 works correctly - + FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true jobs: # ----------------------------------------------------------------------------