chore(docker): bump oven/bun from 1.3.14-alpine to 1.4.0-alpine in /apps/api in the docker-images group #441
This file contains hidden or 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: bundle-diff | |
| on: | |
| # No top-level `paths:` filter — the `size-diff` check is in branch | |
| # protection's required-checks list, so the workflow must report a | |
| # status on every PR or branch protection sits in "Expected — Waiting" | |
| # forever. The expensive build + size-limit steps are gated on the | |
| # internal paths-filter below, so PRs that don't touch the UI bundle | |
| # report green without doing real work. | |
| pull_request: | |
| branches: [main] | |
| concurrency: | |
| group: apps-ui-bundle-diff-${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: | |
| contents: read | |
| pull-requests: write | |
| jobs: | |
| # Build apps/ui with bun (matching local dev), then enforce the | |
| # `.size-limit.json` budgets with `bunx size-limit`. size-limit exits | |
| # non-zero when any chunk exceeds its `limit:` value, so this job is a | |
| # hard gate against bundle bloat. The full table prints in the job log | |
| # so reviewers can scan deltas. | |
| # | |
| # Why a hand-rolled workflow instead of `andresz1/size-limit-action`: | |
| # the action's npm-based install is incompatible with apps/ui's eslint | |
| # peerDep tree (bun resolves leniently, npm 7+ does not), and patching | |
| # around its install/exec quirks burned through three CI cycles. Going | |
| # straight bun keeps the toolchain consistent with local dev. | |
| size-diff: | |
| if: github.actor != 'dependabot[bot]' | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 8 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 | |
| - name: Detect UI bundle changes | |
| uses: dorny/paths-filter@ceb8a2b8f2d89434be7ff52d3de7ec3738c5cc9d # v4.0.3 | |
| id: filter | |
| with: | |
| filters: | | |
| ui: | |
| - 'apps/ui/src/**' | |
| - 'apps/ui/package.json' | |
| - 'apps/ui/bun.lock' | |
| - 'apps/ui/vite.config.ts' | |
| - 'apps/ui/.size-limit.json' | |
| - '.github/workflows/apps-ui-bundle-diff.yml' | |
| - name: No-op notice for non-UI PRs | |
| if: steps.filter.outputs.ui != 'true' | |
| run: echo "No UI bundle inputs changed in this PR — size check skipped." | |
| - name: Set up Bun | |
| if: steps.filter.outputs.ui == 'true' | |
| uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version: 1.3.14 | |
| - name: Cache bun install | |
| if: steps.filter.outputs.ui == 'true' | |
| uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0 | |
| with: | |
| path: ~/.bun/install/cache | |
| key: bun-${{ runner.os }}-${{ hashFiles('apps/ui/bun.lock') }} | |
| restore-keys: | | |
| bun-${{ runner.os }}- | |
| - name: Install | |
| if: steps.filter.outputs.ui == 'true' | |
| working-directory: apps/ui | |
| run: bun install --frozen-lockfile | |
| - name: Build | |
| if: steps.filter.outputs.ui == 'true' | |
| working-directory: apps/ui | |
| run: bun run build | |
| - name: Enforce bundle-size budgets | |
| if: steps.filter.outputs.ui == 'true' | |
| working-directory: apps/ui | |
| run: bunx size-limit |