c4ce1531cc
To avoid accidental breakage when an action is implicitly upgraded, let’s fixate the action versions and let dependabot do it’s thing. Therefore when an action upgrade breaks the build it becomes visible in the dependabot PR.
86 lines
2.5 KiB
YAML
86 lines
2.5 KiB
YAML
name: CI
|
|
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
include:
|
|
- { node-version: 14.x, lint: true, tests: true }
|
|
- { node-version: 15.x, lint: false, tests: true }
|
|
- { node-version: 16.x, lint: true, tests: true }
|
|
- { node-version: 17.x, lint: true, tests: true }
|
|
- { node-version: 18.x, lint: true, tests: true }
|
|
- { node-version: 19.x, lint: true, tests: true }
|
|
|
|
name: nodejs ${{ matrix.node-version }} (${{ matrix.lint && 'lint → ' || '' }}${{ matrix.tests && 'test → ' || '' }}build)
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3.2.0
|
|
|
|
- name: Use Node.js ${{ matrix.node-version }}
|
|
uses: actions/setup-node@v3.5.0
|
|
with:
|
|
node-version: ${{ matrix.node-version }}
|
|
|
|
- name: Cache node modules
|
|
id: cache-npm
|
|
uses: actions/cache@v3.0.11
|
|
env:
|
|
cache-name: cache-node-modules
|
|
with:
|
|
path: node_modules
|
|
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json', '**/package.json') }}
|
|
|
|
- name: Cache eslint
|
|
id: cache-eslint
|
|
uses: actions/cache@v3.0.11
|
|
env:
|
|
cache-name: cache-eslint
|
|
with:
|
|
path: .eslintcache
|
|
key: ${{ env.cache-name }}-${{ hashFiles('**/package-lock.json', '**/package.json') }}
|
|
|
|
- name: Cache TypeScript
|
|
id: cache-typescript
|
|
uses: actions/cache@v3.0.11
|
|
env:
|
|
cache-name: cache-typescript
|
|
with:
|
|
path: .tsbuildinfo
|
|
key: ${{ env.cache-name }}-${{ hashFiles('**/package-lock.json', '**/package.json') }}
|
|
|
|
- name: Cache prettier
|
|
id: cache-prettier
|
|
uses: actions/cache@v3.0.11
|
|
env:
|
|
cache-name: cache-prettier
|
|
with:
|
|
path: node_modules/.cache/prettier/.prettier-cache
|
|
key: ${{ env.cache-name }}-${{ hashFiles('**/package-lock.json', '**/package.json') }}
|
|
|
|
- name: Install dependencies
|
|
run: npm install
|
|
if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
|
|
|
|
- name: Lint the project
|
|
run: npm run lint
|
|
if: ${{ matrix.lint }}
|
|
|
|
- name: Run tests
|
|
run: npm test
|
|
if: ${{ matrix.tests }}
|
|
|
|
- name: Upload code coverage
|
|
uses: actions/upload-artifact@v3.1.1
|
|
with:
|
|
name: code-coverage
|
|
path: coverage/lcov.info
|
|
if: ${{ matrix.node-version == '18.x' }}
|
|
|
|
- name: Build the project
|
|
run: npm run build
|