name: CI on: push: branches: - master - "2.9" pull_request: branches: - master - "2.9" jobs: build: runs-on: ${{ matrix.os }} outputs: coveralls: ${{ steps.changes.outputs.src }} strategy: matrix: os: [ubuntu-latest, windows-latest] fail-fast: false steps: - uses: actions/checkout@v2 - name: Use Node.js uses: actions/setup-node@v1 with: node-version: '14' - uses: dorny/paths-filter@v2 id: changes with: filters: | docs: - 'docs/**' - 'package.json' - 'tsconfig.json' src: - 'src/**' - 'package.json' test: - 'test/**' - 'karma.conf.js' - 'package.json' types: - 'types/**' - 'package.json' - 'tsconfig.json' - name: Install run: npm ci - name: Build run: npm run build - name: Test if: | steps.changes.outputs.src == 'true' || steps.changes.outputs.test == 'true' run: | npm run build if [ "${{ runner.os }}" == "Windows" ]; then npm test elif [ "${{ runner.os }}" == "macOS" ]; then npm test --browsers chrome,safari else xvfb-run --auto-servernum npm test fi shell: bash - name: Lint run: npm run lint - name: Package if: steps.changes.outputs.docs == 'true' run: | npm run docs npm run typedoc npm pack - name: Coveralls Parallel - Chrome if: steps.changes.outputs.src == 'true' uses: coverallsapp/github-action@master with: github-token: ${{ secrets.github_token }} path-to-lcov: './coverage/chrome/lcov.info' flag-name: ${{ matrix.os }}-chrome parallel: true - name: Coveralls Parallel - Firefox if: steps.changes.outputs.src == 'true' uses: coverallsapp/github-action@master with: github-token: ${{ secrets.github_token }} path-to-lcov: './coverage/firefox/lcov.info' flag-name: ${{ matrix.os }}-firefox parallel: true finish: needs: build runs-on: ubuntu-latest steps: - name: Coveralls Finished if: needs.build.outputs.coveralls == 'true' uses: coverallsapp/github-action@master with: github-token: ${{ secrets.github_token }} parallel-finished: true