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.
65 lines
1.4 KiB
YAML
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 }}
|