Skip to content

chore: cascade bump packages after types/utils release pins #1172

chore: cascade bump packages after types/utils release pins

chore: cascade bump packages after types/utils release pins #1172

Workflow file for this run

name: ci
on:
push:
branches:
- main
pull_request:
branches:
- main
# One job: install/build/prepare once, then run everything sequentially.
# Avoids paying for duplicated setup across parallel jobs.
jobs:
ci:
runs-on: ubuntu-latest
env:
# Build shared fixtures in parallel. The runner has 4 vCPU / 15 GiB with
# ~14 GiB free (the earlier ERR_IPC_CHANNEL_CLOSED crashes were caused by
# tests killing processes by port, not by memory pressure).
FIXTURE_BUILD_CONCURRENCY: 4
steps:
- uses: actions/checkout@v4
with:
# Full history: check:versions diffs against the PR merge-base / last tag.
fetch-depth: 0
- uses: pnpm/action-setup@v4
with:
version: 9.14.2
run_install: false
- uses: actions/setup-node@v4
with:
node-version: 22
cache: pnpm
- uses: actions/cache@v4
with:
path: |
test/.fixture-builds
# Source-only globs: broad test/fixtures/** also matches .output-shared
# after e2e and hashFiles fails when saving the cache at job end.
key: e2e-shared-${{ runner.os }}-${{ hashFiles('test/setup/manifest.ts', 'test/setup/shared-fixtures-core.ts', 'test/setup/build-fixture-worker.mjs', 'test/fixtures/**/nuxt.config.ts', 'test/fixtures/**/package.json', 'test/fixtures/**/app.vue', 'test/fixtures/**/app/**', 'test/fixtures/**/pages/**', 'test/fixtures/**/components/**', 'test/fixtures/**/locales/**', 'test/fixtures/**/server/**', 'test/fixtures/**/modules/**', 'test/fixtures/**/content.config.ts', 'test/fixtures/**/content/**', 'test/fixtures/**/layers/**', 'test/fixtures/**/middleware/**', 'test/fixtures/**/plugins/**', 'test/fixtures/**/layouts/**', 'test/fixtures/**/composables/**', 'test/fixtures/**/public/**', 'test/fixtures/**/data/**', 'src/**', 'packages/**/src/**', 'packages/**/package.json', 'pnpm-lock.yaml', 'package.json') }}
restore-keys: |
e2e-shared-${{ runner.os }}-
- run: pnpm install
# Packages in packages/* are versioned by hand and `pnpm publish -r` silently
# skips a version that already exists on npm — so a forgotten bump ships a
# stale package. Fail here instead. Cheap (git only), so it runs early.
- run: pnpm run check:versions
# Memory headroom on the runner, for the record: ubuntu-latest gives
# 4 vCPU / 15 GiB with ~14 GiB free and ~4 GiB of swap already configured.
# The previous ERR_IPC_CHANNEL_CLOSED crashes were tests killing processes
# by port (lsof + SIGKILL), not memory — so no extra swap is provisioned.
# If a step ever does run out of memory, print `free -h` here first to
# confirm it before adding any.
- run: pnpm run lint
# Three steps, in this order, because the dependency runs both ways:
# `dev:prepare` loads src/module.ts, which imports the packages from their
# `dist`, so the packages have to be built first — while the demo apps
# under packages/*/playground are bundled by tools that walk up to the
# repo-root tsconfig.json, which `extends` the `.nuxt/tsconfig.json` that
# only `dev:prepare` generates. Astro 7 (vite 8 / rolldown) hard-errors on
# that missing file instead of ignoring it, so the demos build last.
- run: pnpm --filter "./packages/**" --filter "!./packages/*/playground" run build
- run: pnpm run dev:prepare
- run: pnpm --filter "./packages/*/playground" run build
- run: pnpm run typecheck
# integration + e2e both drive a real browser (chromium.launch / createPage)
- run: pnpm exec playwright install chromium
- run: pnpm run test:packages
- run: pnpm run test:unit
- run: pnpm run test:integration
- run: pnpm run test:e2e
- run: pnpm verify:packages && pnpm verify:packages:publint
- run: pnpm run test:dist:packages
# --local-only keeps both packaging gates (hashed chunks, astro client CJS),
# which are computed from the local pack, and skips the npm reference
# download that only feeds informational diffs. Full comparison runs on release.
- run: pnpm run compare:published -- --local-only --changed-only