name: Node CI on: [push] jobs: build: name: build runs-on: ubuntu-latest continue-on-error: ${{ matrix.experimental }} strategy: matrix: node-version: [20.x, 22.x, 24.x, 25.x] experimental: [true] steps: - uses: actions/checkout@v7 - name: Use Node.js ${{ matrix.node-version }} uses: actions/setup-node@v6 with: node-version: ${{ matrix.node-version }} - name: Install dependencies run: npm ci - name: Lint source code run: npm run lint - name: Run tests run: npm test - name: Generate API docs run: npm run docs:api env: CI: true release: needs: build if: github.ref == 'refs/heads/master' name: release runs-on: ubuntu-latest permissions: contents: write id-token: write repository-projects: write steps: - uses: actions/checkout@v7 - uses: fregante/setup-git-user@v2 - run: git config --global user.name "dependabot" - name: Use Node.js 24.x uses: actions/setup-node@v6 with: node-version: 24.x registry-url: 'https://registry.npmjs.org' - name: Install dependencies run: npm ci - name: Run release script run: npm run release pages: needs: release if: github.ref == 'refs/heads/master' name: deploy docs to GitHub Pages environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} runs-on: ubuntu-latest permissions: pages: write id-token: write contents: read steps: - uses: actions/checkout@v7 - name: Use Node.js 24.x uses: actions/setup-node@v6 with: node-version: 24.x - name: Install dependencies run: npm ci - name: Generate API docs run: npm run docs:api - name: Configure GitHub Pages uses: actions/configure-pages@v6 - name: Upload pages artifact uses: actions/upload-pages-artifact@v5 with: path: demo - name: Deploy to GitHub Pages uses: actions/deploy-pages@v5