name: "Master Build, Test & Deploy" on: workflow_dispatch: push: branches: - master permissions: contents: read jobs: main: permissions: contents: write pages: write runs-on: ubuntu-latest steps: - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - name: Set node version uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 with: node-version: 24 registry-url: "https://registry.npmjs.org" - name: Install run: | npm ci 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: Setup Chrome id: setup-chrome if: success() run: | npx @puppeteer/browsers install chrome@148 echo chromedir=$(dirname $(find `pwd`/chrome/* -name chrome -print -quit)) >> $GITHUB_OUTPUT - name: UI Tests if: success() run: | export PATH=${{ steps.setup-chrome.outputs.chromedir }}:$PATH 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@1d6ee9b181a81033a16bd707a1401afa978daab4 # v5.0.0 with: target_branch: gh-pages build_dir: ./build/prod env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}