Files
Michał Pierzchała d167eaf0f3 ci: drop duplicate unit-test run, cache Size base dist, typecheck with tsgo (#1094)
Three measured dev-loop/CI cuts, no signal loss:

- typecheck now runs tsgo (already trusted for declaration emit by the
  tsdown build): 21.7s -> 5.3s locally, and check:tooling drops to ~18s
  total. tsc stays available as typecheck:tsc; verified tsgo fails on
  type errors and respects noUnusedLocals.
- remove the Unit Tests CI job: Coverage runs the same unit +
  provider-integration suites under coverage thresholds, so the job
  reran ~64s of tests every PR for no extra signal.
- Size workflow: skip docs-only paths (same paths-ignore as CI) and
  cache the base commit's dist keyed on base SHA, since dist is fully
  determined by that commit. Startup medians are still measured fresh
  on the same runner so the base/PR startup comparison stays
  same-machine; the cache is saved immediately after the base
  measurement so the PR build never poisons it.


Claude-Session: https://claude.ai/code/session_01FqeW8sA2ZnvnftdvpCqFMS

Co-authored-by: Claude <noreply@anthropic.com>
2026-07-04 16:40:34 +02:00

88 lines
2.9 KiB
YAML

name: Size
on:
pull_request:
paths-ignore:
- "docs/**"
- "website/**"
- "README.md"
- ".github/actions/build-docs/action.yml"
- ".github/workflows/deploy.yml"
- ".github/workflows/pr-preview.yml"
- ".github/workflows/pr-preview-cleanup.yml"
permissions:
contents: read
pull-requests: write
concurrency:
group: size-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
bundle-size:
name: Bundle Size
if: github.event.pull_request.head.repo.full_name == github.repository
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
- name: Setup toolchain
uses: ./.github/actions/setup-node-pnpm
- name: Preserve report script
run: cp scripts/size-report.mjs /tmp/agent-device-size-report.mjs
# dist is fully determined by the base commit, so reuse it across PR runs
# against the same base. Startup medians are still measured fresh on this
# runner so the base/PR comparison stays same-machine.
- name: Restore base dist cache
id: base-dist-cache
uses: actions/cache/restore@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.2.3
with:
path: dist
key: size-base-dist-${{ github.event.pull_request.base.sha }}
- name: Measure base size
run: |
git checkout --detach "${{ github.event.pull_request.base.sha }}"
pnpm install --frozen-lockfile
if [ "${{ steps.base-dist-cache.outputs.cache-hit }}" != "true" ]; then
pnpm build
fi
node /tmp/agent-device-size-report.mjs \
--startup-runs 7 \
--json /tmp/agent-device-size-base.json
# Save immediately: the job-end dist belongs to the PR head, not the base.
- name: Save base dist cache
if: steps.base-dist-cache.outputs.cache-hit != 'true'
uses: actions/cache/save@0057852bfaa89a56745cba8c7296529d2fc39830 # v4.2.3
with:
path: dist
key: size-base-dist-${{ github.event.pull_request.base.sha }}
- name: Measure PR size
run: |
git checkout --detach "${{ github.event.pull_request.head.sha }}"
pnpm install --frozen-lockfile
pnpm build
node scripts/size-report.mjs \
--compare /tmp/agent-device-size-base.json \
--startup-runs 7 \
--json .tmp/size-report.json \
--markdown .tmp/size-report.md
- name: Add job summary
run: cat .tmp/size-report.md >> "$GITHUB_STEP_SUMMARY"
- name: Comment on PR
env:
GITHUB_TOKEN: ${{ github.token }}
GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
run: node scripts/size-report.mjs --post-comment .tmp/size-report.md