name: CI on: push: branches: [main] pull_request: permissions: contents: read concurrency: group: ci-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: test: runs-on: ubuntu-latest strategy: fail-fast: false matrix: node: [22, 24] steps: - uses: actions/checkout@v6 - uses: actions/setup-node@v6 with: node-version: ${{ matrix.node }} cache: npm - run: npm ci --ignore-scripts - run: npm run typecheck - run: npm run lint - run: npm test - run: npm run build - run: npm run smoke - run: docker compose -f infra/compose.yaml config --quiet - if: matrix.node == 22 run: npm pack --dry-run