--- name: Node CI on: pull_request: {} jobs: paths-filter: name: Detect files changed runs-on: ubuntu-latest outputs: src-only: "${{ steps.changes.outputs.src-only }}" steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: persist-credentials: false - uses: dorny/paths-filter/@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 id: changes with: filters: | src-only: - '!(**/*.{md,asciidoc,txt}|*.{md,asciidoc,txt}|{docs,.buildkite,scripts}/**/*|catalog-info.yaml)' - '.github/workflows/**' test: name: Test runs-on: ${{ matrix.os }} needs: paths-filter # only run if code relevant to unit tests was changed if: needs.paths-filter.outputs.src-only == 'true' strategy: fail-fast: false matrix: node-version: [20.x, 22.x, 23.x] os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: persist-credentials: false - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: ${{ matrix.node-version }} - name: Install run: | npm install - name: Lint run: | npm run lint - name: Unit test run: | npm run test:unit - name: ECMAScript module test run: | npm run test:esm license: name: License check runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: persist-credentials: false - name: Use Node.js uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4 with: node-version: 22.x - name: Install run: | npm install - name: License checker run: | npm run license-checker - name: SPDX header check run: npm run license-header test-bun: name: Test Bun runs-on: ${{ matrix.os }} needs: paths-filter # only run if code relevant to unit tests was changed if: needs.paths-filter.outputs.src-only == 'true' strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4 with: persist-credentials: false - name: Use Bun uses: oven-sh/setup-bun@735343b667d3e6f658f44d0eca948eb6282f2b76 # v2 - name: Install run: | bun install - name: Lint run: | bun run lint - name: Unit test run: | bun run test:unit-bun - name: ECMAScript module test run: | bun run test:esm