name: CI on: [push, pull_request] jobs: build_and_lint: runs-on: ubuntu-latest steps: - name: Checkout the repository uses: actions/checkout@v2 - name: Setup Node.js uses: actions/setup-node@v2 with: # The default version is 14 # The ESLint config requires Node 16 to work properly node-version: '16' - name: Retrieve the cached "node_modules" directory (if present) uses: actions/cache@v2 id: node-cache with: path: node_modules key: node-modules-${{ runner.os }}-${{ hashFiles('package-lock.json') }} - name: Install dependencies (if the cached directory was not found) if: steps.node-cache.outputs.cache-hit != 'true' run: npm ci - name: Test to see if the project compiles run: bash build.sh - name: Perform automated checks run: bash lint.sh discord: name: Discord Failure Notification needs: [build_and_lint] if: always() # This is needed to always run this job, even if the other jobs fail runs-on: ubuntu-latest steps: - uses: technote-space/workflow-conclusion-action@v2 - if: env.WORKFLOW_CONCLUSION != 'success' && env.WORKFLOW_CONCLUSION != 'cancelled' uses: sarisia/actions-status-discord@v1 with: webhook: ${{ secrets.DISCORD_WEBHOOK }} status: ${{ env.WORKFLOW_CONCLUSION }} title: ""