mirror of
https://github.com/callstack/agent-device.git
synced 2026-09-14 20:06:34 +08:00
d167eaf0f3
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>
88 lines
2.9 KiB
YAML
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
|