ci: compare bundle size #5940
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: | |
- main | |
- bun | |
- fastly | |
- node | |
- deno | |
- 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@v2 | |
with: | |
bun-version: '1.1.33' | |
- 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@v2 | |
with: | |
deno-version: v2.x | |
- uses: oven-sh/setup-bun@v2 | |
- run: bunx jsr publish --dry-run | |
deno: | |
name: 'Deno' | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: denoland/setup-deno@v2 | |
with: | |
deno-version: v2.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 | |
- run: grep -R '"url":' coverage | grep -v runtime-tests | sed -e 's/.*file:..//;s/.,//' | xargs deno cache --unstable-sloppy-imports | |
- run: deno coverage --lcov > coverage/deno-runtime-coverage-lcov.info | |
- 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@v2 | |
with: | |
bun-version: '1.1.33' | |
- 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@v2 | |
- 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@v2 | |
- 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@v2 | |
- 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@v2 | |
- 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@v2 | |
- 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: | |
name: 'Type Check on PR' | |
runs-on: ubuntu-latest | |
if: github.event_name == 'pull_request' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: oven-sh/setup-bun@v2 | |
- 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<<EOF' | |
bun scripts/process-results.ts | column -s '|' -t | |
echo 'EOF' | |
} >> "$GITHUB_ENV" | |
working-directory: perf-measures/type-check | |
- run: echo "$COMPARISON" | |
name: display comparison | |
perf-measures-type-check-on-main: | |
name: 'Type Check on Main' | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: oven-sh/setup-bun@v2 | |
- 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 }} | |
perf-measures-bundle-check-on-pr: | |
name: 'Bundle Check on PR' | |
runs-on: ubuntu-latest | |
if: github.event_name == 'pull_request' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: oven-sh/setup-bun@v2 | |
- run: bun install | |
- run: bun run build | |
- run: bunx esbuild --minify --bundle dist/index.js --format=esm --outfile=perf-measures/bundle-check/generated/after.js | |
- uses: actions/cache/restore@v4 | |
with: | |
path: perf-measures/bundle-check/generated/before.js | |
restore-keys: | | |
perf-measures-bundle-check-previous-file- | |
key: perf-measures-bundle-check-previous-file- | |
- run: | | |
{ | |
echo 'COMPARISON<<EOF' | |
ls -l ./generated | column -s '|' -t | |
echo 'EOF' | |
} >> "$GITHUB_ENV" | |
working-directory: perf-measures/bundle-check | |
- run: echo "$COMPARISON" | |
name: display comparison | |
perf-measures-bundle-check-on-main: | |
name: 'Bundle Check on Main' | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/main' | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: oven-sh/setup-bun@v2 | |
- run: bun install | |
- run: bun run build | |
- run: bunx esbuild --minify --bundle dist/index.js --format=esm --outfile=perf-measures/bundle-check/generated/before.js | |
- uses: actions/cache/save@v4 | |
with: | |
path: perf-measures/bundle-check/generated/before.js | |
key: perf-measures-bundle-check-previous-file-${{ github.sha }} |