name: build on: push: branches: [ main ] pull_request: branches: [ main ] jobs: build: name: build and node tests runs-on: ubuntu-latest strategy: matrix: os: [ ubuntu-latest, windows-latest, macos-latest ] node-version: [14.x, 16.x, 18.x] steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - name: install run: npm ci - name: lint run: npm run lint - name: build run: npm run build:js - if: matrix.node-version == '16.x' name: docs run: npm run docs - name: node tests run: npm run test:node - if: matrix.node-version == '16.x' name: browser tests run: npm run test:browser-headless publication: needs: build runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: EndBug/version-check@v1 id: check - name: check version changes if: steps.check.outputs.changed == 'true' run: 'echo "Version change found! New version: ${{ steps.check.outputs.version }} (${{ steps.check.outputs.type }})"' - uses: actions/setup-node@v1 if: steps.check.outputs.changed == 'true' with: node-version: 16 registry-url: https://registry.npmjs.org/ - name: install if: steps.check.outputs.changed == 'true' run: npm ci - name: lint if: steps.check.outputs.changed == 'true' run: npm run lint - name: build if: steps.check.outputs.changed == 'true' run: npm run build:js - name: docs if: steps.check.outputs.changed == 'true' run: npm run docs - name: browser tests if: steps.check.outputs.changed == 'true' run: npm run test:browser-headless - name: node tests and coverage if: steps.check.outputs.changed == 'true' run: npm run coverage - name: send report to coveralls.io if: steps.check.outputs.changed == 'true' uses: coverallsapp/github-action@master with: github-token: ${{ secrets.GITHUB_TOKEN }} - name: publish to NPM if: steps.check.outputs.changed == 'true' run: npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}