name: "Master Build, Test & Deploy"

on:
  workflow_dispatch:
  push:
    branches:
    - master

jobs:
  main:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2

    - name: Set node version
      uses: actions/setup-node@v1
      with:
        node-version: '17.x'

    - name: Install
      run: |
        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

    - name: Generate sitemap
      run: npx grunt exec:sitemap

    # - name: UI Tests
    #   if: success()
    #   run: 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@v2
      with:
        target_branch: gh-pages
        build_dir: ./build/prod
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
