Bart van Andel 97ae7e3a15 chore: require Node >=v18.20, and default to v22
Anything older than Node v22 is end-of-life, and doesn't get any more
support outside of commercial support.

See https://endoflife.date/nodejs

The current code is still compatible with Node v18.20 and up though,
which switched from import assertions (`assert` keyword) to import
attributes (`with` keyword).

See https://nodejs.org/en/blog/release/v18.20.0

We can't go higher than v22 yet due to certain dependencies depending
on obsolete behavior and `node` command line flags. For instance, the
current version of `argon2-browser` (which is 4 years old) breaks on
Node's native `fetch` behavior, which used to be experimental, but is
now mainstream, and can no longer be disabled in Node v23 and up.
2026-02-05 13:45:57 +01:00

65 lines
1.4 KiB
YAML

name: "Master Build, Test & Deploy"
permissions:
contents: read
on:
workflow_dispatch:
push:
branches:
- master
jobs:
main:
permissions:
contents: write
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Set node version
uses: actions/setup-node@v6
with:
node-version: 22
registry-url: "https://registry.npmjs.org"
- name: Install
run: |
export DETECT_CHROMEDRIVER_VERSION=true
npm install
npm run setheapsize
- name: Lint
run: npx grunt lint
- name: Unit Tests
run: |
npm test
npm run testnodeconsumer
- name: Production Build
if: success()
run: npx grunt prod --msg=""
- name: Generate sitemap
run: npx grunt exec:sitemap
- name: UI Tests
if: success()
run: |
sudo apt-get install xvfb
xvfb-run --server-args="-screen 0 1200x800x24" npx grunt testui
- name: Prepare for GitHub Pages
if: success()
run: npx grunt copy:ghPages
- name: Deploy to GitHub Pages
if: success() && github.ref == 'refs/heads/master'
uses: crazy-max/ghaction-github-pages@v3
with:
target_branch: gh-pages
build_dir: ./build/prod
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}