mirror of
https://github.com/callstack/agent-device.git
synced 2026-09-14 20:06:34 +08:00
b15121ffc8
* test(ios): add snapshot convergence evidence harness * fix(ios): satisfy benchmark CI guards * fix(ios): constrain benchmark proxy routes * fix(ios-benchmark): enforce cell admission evidence * fix(ios-benchmark): protect benchmark state ownership * fix(ios-benchmark): use proxy port flag * fix(ios-benchmark): let proxy choose an ephemeral port * test(ios-benchmark): keep CLI process seam local * fix(ios-benchmark): parse proxy startup envelope * fix(ios-benchmark): bind proxy lease to simulator * fix(ios-benchmark): keep fresh proxy CLI sessions isolated * fix(ios-benchmark): preserve async timeout evidence * docs(ios-benchmark): retain exact-head evidence * test(ios): reveal offscreen alert fixture controls * test(ios): reset alert between relaunch samples * test(ios): admit native alert snapshots * docs(ios): publish snapshot convergence corpus * chore(ios): format benchmark evidence * fix(ios-benchmark): admit proxy fixture anchors * docs(ios): republish exact-head benchmark corpus * fix(size): make publish asset evidence hermetic * style(size): format package evidence test * test(size): update publish preparation contracts * fix: retire stale utils layering zone * test: pin shared publish asset owner * test: verify preserved size reporter closure * fix: move mutation ownership to snapshot module * test(ios): add snapshot convergence evidence harness * fix(ios): satisfy benchmark CI guards * fix(ios): constrain benchmark proxy routes * fix(ios-benchmark): enforce cell admission evidence * fix(ios-benchmark): protect benchmark state ownership * fix(ios-benchmark): use proxy port flag * fix(ios-benchmark): let proxy choose an ephemeral port * test(ios-benchmark): keep CLI process seam local * fix(ios-benchmark): parse proxy startup envelope * fix(ios-benchmark): bind proxy lease to simulator * fix(ios-benchmark): keep fresh proxy CLI sessions isolated * fix(ios-benchmark): preserve async timeout evidence * docs(ios-benchmark): retain exact-head evidence * test(ios): reveal offscreen alert fixture controls * test(ios): reset alert between relaunch samples * test(ios): admit native alert snapshots * docs(ios): publish snapshot convergence corpus * chore(ios): format benchmark evidence * fix(ios-benchmark): admit proxy fixture anchors * docs(ios): republish exact-head benchmark corpus * fix(size): make publish asset evidence hermetic * test(size): update publish preparation contracts * fix: keep git-state gates out of mutation sandboxes
111 lines
3.7 KiB
YAML
111 lines
3.7 KiB
YAML
name: Size
|
|
|
|
on:
|
|
pull_request:
|
|
paths-ignore:
|
|
- 'docs/**'
|
|
- 'website/**'
|
|
- 'README.md'
|
|
- 'AGENTS.md'
|
|
- 'CHANGELOG.md'
|
|
- 'CONTEXT.md'
|
|
- 'CONTRIBUTING.md'
|
|
- 'LICENSE'
|
|
- 'SECURITY.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 scripts
|
|
run: |
|
|
mkdir -p /tmp/agent-device-size-report
|
|
cp scripts/size-report*.mjs /tmp/agent-device-size-report/
|
|
cp scripts/prepare-publish-assets.mjs /tmp/agent-device-size-report/
|
|
|
|
- name: Install Android helper toolchain
|
|
run: |
|
|
SDK_ROOT="${ANDROID_HOME:-${ANDROID_SDK_ROOT:-/usr/local/lib/android/sdk}}"
|
|
SDKMANAGER="$SDK_ROOT/cmdline-tools/latest/bin/sdkmanager"
|
|
if [ ! -x "$SDKMANAGER" ]; then
|
|
SDKMANAGER="$SDK_ROOT/cmdline-tools/bin/sdkmanager"
|
|
fi
|
|
if [ ! -x "$SDKMANAGER" ]; then
|
|
echo "sdkmanager not found under $SDK_ROOT" >&2
|
|
exit 1
|
|
fi
|
|
yes | "$SDKMANAGER" --licenses >/dev/null || true
|
|
"$SDKMANAGER" "platforms;android-36" "build-tools;36.0.0"
|
|
|
|
# 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/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
|
|
pnpm size \
|
|
--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: pnpm size --post-comment .tmp/size-report.md
|