name: CI on: push: branches: - master - "2.9" pull_request: branches: - master - "2.9" workflow_dispatch: permissions: contents: read jobs: build: permissions: checks: write # for coverallsapp/github-action to create new checks contents: read # for dorny/paths-filter to fetch a list of changed files pull-requests: read # for dorny/paths-filter to read pull requests runs-on: ${{ matrix.os }} outputs: coveralls: ${{ steps.changes.outputs.src }} strategy: matrix: os: [ubuntu-latest, windows-latest] fail-fast: false steps: - uses: actions/checkout@v4 - uses: pnpm/action-setup@v4.0.0 - name: Use Node.js uses: actions/setup-node@v4 with: node-version: 16 cache: pnpm - uses: dorny/paths-filter@v3 id: changes with: filters: | docs: - 'docs/**' - 'package.json' - 'tsconfig.json' src: - 'src/**' - 'package.json' test: - 'test/**' - 'karma.conf.js' - 'package.json' types: - 'package.json' - 'tsconfig.json' - name: Install run: pnpm install - name: Lint run: pnpm run lint - name: Build run: pnpm run build - name: Test if: | (steps.changes.outputs.src == 'true' || steps.changes.outputs.test == 'true') && runner.os != 'Windows' run: | pnpm run build if [ "${{ runner.os }}" == "macOS" ]; then pnpm run test-ci --browsers chrome,safari else xvfb-run --auto-servernum pnpm run test-ci fi shell: bash - name: Package if: steps.changes.outputs.docs == 'true' run: | pnpm run docs pnpm pack - name: Coveralls Parallel - Chrome if: | steps.changes.outputs.src == 'true' && runner.os != 'Windows' 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' && runner.os != 'Windows' 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: permissions: checks: write # for coverallsapp/github-action to create new checks 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