name: CI on: push: branches: - main - 'v*' paths-ignore: - 'docs/**' - '*.md' pull_request: paths-ignore: - 'docs/**' - '*.md' # This allows a subsequently queued workflow run to interrupt previous runs concurrency: group: "${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}" cancel-in-progress: true jobs: test: name: ${{ matrix.node-version }} ${{ matrix.os }} runs-on: ${{ matrix.os }} permissions: contents: read strategy: fail-fast: false matrix: os: [macOS-latest, windows-latest, ubuntu-latest] node-version: [18, 20, 22, 24] steps: - name: Check out repo uses: actions/checkout@v5.0.0 with: persist-credentials: false - name: Setup Node ${{ matrix.node-version }} uses: actions/setup-node@v5 with: node-version: ${{ matrix.node-version }} - name: Install dependencies run: npm i --ignore-scripts - name: Run tests run: npm run test