Skip to content

ci: Display performance measurement results as custom metrics #5966

ci: Display performance measurement results as custom metrics

ci: Display performance measurement results as custom metrics #5966

Workflow file for this run

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