name: CI on: [push, pull_request] jobs: Tests: runs-on: ${{ matrix.os }} timeout-minutes: 15 strategy: matrix: node-version: [8, 10, 12, 14] os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - id: npm-cache-dir run: echo "::set-output name=dir::$(npm config get cache)" - uses: actions/cache@v2 id: npm-cache with: path: ${{ steps.npm-cache-dir.outputs.dir }} key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: ${{ runner.os }}-node- - run: npm install - run: npm test env: CI: true Lint: runs-on: ubuntu-latest timeout-minutes: 5 steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 - id: npm-cache-dir run: echo "::set-output name=dir::$(npm config get cache)" - uses: actions/cache@v2 id: npm-cache with: path: ${{ steps.npm-cache-dir.outputs.dir }} key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: ${{ runner.os }}-node- - run: 'npm i && npm run lint' Unit: runs-on: ${{ matrix.os }} timeout-minutes: 10 strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@v1 - uses: actions/setup-node@v1 - id: npm-cache-dir run: echo "::set-output name=dir::$(npm config get cache)" - uses: actions/cache@v2 id: npm-cache with: path: ${{ steps.npm-cache-dir.outputs.dir }} key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} restore-keys: ${{ runner.os }}-node- - run: 'npm i && npm run test:unit'