49 lines
1.4 KiB
YAML
49 lines
1.4 KiB
YAML
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: ""
|