name: ci on: push: branches: [main, next] pull_request: branches: ['*'] paths-ignore: - 'docs/**' - '.vscode/**' - 'README.md' - '.gitignore' - 'LICENSE' jobs: coverage: name: 'Coverage' runs-on: ubuntu-latest needs: # bun excluded because it uses built-in test tool which does not support coverage in v8/istanbul format. # refer https://github.com/oven-sh/bun/issues/4015 - main - fastly - node - workerd - lambda - lambda-edge steps: - uses: actions/checkout@v4 - uses: actions/download-artifact@v4 with: pattern: coverage-* merge-multiple: true path: ./coverage - uses: codecov/codecov-action@v4 with: fail_ci_if_error: true directory: ./coverage env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} main: name: 'Main' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20.x' - uses: oven-sh/setup-bun@v1 with: bun-version: '1.1.16' - run: bun install - run: bun run format - run: bun run lint - run: bun run build - run: bun run test - uses: actions/upload-artifact@v4 with: name: coverage-main path: coverage/ jsr-dry-run: name: "Checking if it's valid for JSR" runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: denoland/setup-deno@v1 with: deno-version: v1.x - run: deno publish --dry-run deno: name: 'Deno' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: denoland/setup-deno@v1 with: deno-version: v1.x - run: env NAME=Deno deno test --coverage=coverage/raw/deno-runtime --allow-read --allow-env --allow-write --allow-net -c runtime-tests/deno/deno.json runtime-tests/deno - run: deno test -c runtime-tests/deno-jsx/deno.precompile.json --coverage=coverage/raw/deno-precompile-jsx runtime-tests/deno-jsx - run: deno test -c runtime-tests/deno-jsx/deno.react-jsx.json --coverage=coverage/raw/deno-react-jsx runtime-tests/deno-jsx - uses: actions/upload-artifact@v4 with: name: coverage-deno path: coverage/ bun: name: 'Bun' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v1 with: bun-version: '1.1.16' - run: bun run test:bun - uses: actions/upload-artifact@v4 with: name: coverage-bun path: coverage/ fastly: name: 'Fastly Compute' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v1 - run: bun install - run: bun run build - run: bun run test:fastly - uses: actions/upload-artifact@v4 with: name: coverage-fastly path: coverage/ node: name: 'Node.js v${{ matrix.node }}' runs-on: ubuntu-latest strategy: matrix: node: ['18.18.2', '20.x', '22.x'] steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: ${{ matrix.node }} - uses: oven-sh/setup-bun@v1 - run: bun install - run: bun run build - run: bun run test:node - uses: actions/upload-artifact@v4 if: matrix.node == '22.x' with: name: coverage-node path: coverage/ workerd: name: 'workerd' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: '20.x' - uses: oven-sh/setup-bun@v1 - run: bun install - run: bun run build - run: bun run test:workerd - uses: actions/upload-artifact@v4 with: name: coverage-workerd path: coverage/ lambda: name: 'AWS Lambda' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v1 - run: bun install - run: bun run build - run: bun run test:lambda - uses: actions/upload-artifact@v4 with: name: coverage-lambda path: coverage/ lambda-edge: name: 'Lambda@Edge' runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v1 - run: bun install --frozen-lockfile - run: bun run build - run: bun run test:lambda-edge - uses: actions/upload-artifact@v4 with: name: coverage-lambda-edge path: coverage/ perf-measures-type-check-on-pr: runs-on: ubuntu-latest if: github.event_name == 'pull_request' steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v1 - run: bun install - uses: actions/cache/restore@v4 with: path: perf-measures/type-check/previous-result.txt restore-keys: | type-check-perf-previous-result- key: type-check-perf-previous-result- - run: bun scripts/generate-app.ts working-directory: perf-measures/type-check - run: bun tsc -p tsconfig.build.json --diagnostics > result.txt working-directory: perf-measures/type-check - run: | { echo 'COMPARISON<> "$GITHUB_ENV" working-directory: perf-measures/type-check - run: echo "$COMPARISON" name: display comparison perf-measures-type-check-on-main: runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - uses: oven-sh/setup-bun@v1 - run: bun install - run: bun scripts/generate-app.ts working-directory: perf-measures/type-check - run: bun tsc -p tsconfig.build.json --diagnostics > previous-result.txt working-directory: perf-measures/type-check - uses: actions/cache/save@v4 with: path: perf-measures/type-check/previous-result.txt key: type-check-perf-previous-result-${{ github.sha }}