ci: Display performance measurement results as custom metrics #5966
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-and-bundle-check-on-pr: | |
name: 'Type & Bundle size 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 | |
- name: Performance measurement of type check | |
run: | | |
bun scripts/generate-app.ts | |
bun tsc -p tsconfig.build.json --diagnostics | bun scripts/process-results.ts > diagnostics.json | |
working-directory: perf-measures/type-check | |
- name: Performance measurement of bundle check | |
run: | | |
bun run build | |
bunx esbuild --minify --bundle dist/index.js --format=esm --outfile=perf-measures/bundle-check/generated/bundle.js | |
bun perf-measures/bundle-check/scripts/process-results.ts perf-measures/bundle-check/generated/bundle.js > perf-measures/bundle-check/size.json | |
- name: Run octocov | |
uses: k1LoW/octocov-action@v1 | |
with: | |
config: perf-measures/.octocov.perf-measures.yml | |
env: | |
OCTOCOV_CUSTOM_METRICS_BENCHMARK_BUNDLE: perf-measures/bundle-check/size.json | |
OCTOCOV_CUSTOM_METRICS_BENCHMARK_TYPE: perf-measures/type-check/diagnostics.json | |
perf-measures-type-and-bundle-check-on-main: | |
name: 'Type & Bundle size 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 | |
- name: Performance measurement of type check | |
run: | | |
bun scripts/generate-app.ts | |
bun tsc -p tsconfig.build.json --diagnostics | bun scripts/process-results.ts > diagnostics.json | |
working-directory: perf-measures/type-check | |
- name: Performance measurement of bundle check | |
run: | | |
bun run build | |
bunx esbuild --minify --bundle dist/index.js --format=esm --outfile=perf-measures/bundle-check/generated/bundle.js | |
bun perf-measures/bundle-check/scripts/process-results.ts perf-measures/bundle-check/generated/bundle.js > perf-measures/bundle-check/size.json | |
- name: Run octocov (main) | |
uses: k1LoW/octocov-action@v1 | |
with: | |
config: perf-measures/type-check/.octocov.perf-measures.main.yml | |
env: | |
OCTOCOV_GITHUB_REF: refs/heads/main | |
OCTOCOV_CUSTOM_METRICS_BENCHMARK_BUNDLE: perf-measures/bundle-check/size.json | |
OCTOCOV_CUSTOM_METRICS_BENCHMARK_TYPE: perf-measures/type-check/diagnostics.json |