name: Pull Request on: workflow_dispatch: pull_request: branches: - main jobs: lint: name: Lint runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Setup node uses: actions/setup-node@v4 with: node-version: lts/* - name: Install dependencies run: npm install - name: Lint code run: npm run lint format: name: Format runs-on: ubuntu-latest steps: - name: Check out repository uses: actions/checkout@v4 - name: Setup node uses: actions/setup-node@v4 with: node-version: lts/* - name: Install dependencies run: npm install - name: Format code run: npm run format test: name: test runs-on: ubuntu-latest strategy: matrix: node-version: [18.x, 20.x, 22.x, 23.x, 24.x] fail-fast: false steps: - name: Check out repository uses: actions/checkout@v4 - name: Setup node ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} - name: Install dependencies run: npm install - name: Run test coverage and tests run: npm run test:ci - name: Upload test coverage artifact uses: actions/upload-artifact@v4 with: name: coverage-${{ matrix.node-version }} path: ./coverage publish_coverage: name: Publish Coverage runs-on: ubuntu-latest needs: test steps: - name: Check out repository uses: actions/checkout@v4 - name: Setup node uses: actions/setup-node@v4 with: node-version: lts/* - name: Download test coverage artifact uses: actions/download-artifact@v4 with: name: coverage-24.x path: ./coverage - name: Upload coverage reports to Codecov uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }}