| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- name: CI
- on:
- push:
- branches: [master, main]
- pull_request:
- branches: [master, main]
- jobs:
- build-and-test:
- runs-on: ${{ matrix.os }}
- strategy:
- fail-fast: false
- matrix:
- os: [ubuntu-latest, windows-latest]
- node-version: [20, 22]
- steps:
- - uses: actions/checkout@v4
- - uses: pnpm/action-setup@v4
- with:
- version: 9
- - uses: actions/setup-node@v4
- with:
- node-version: ${{ matrix.node-version }}
- cache: pnpm
- - run: pnpm install --frozen-lockfile
- - run: pnpm build
- - run: pnpm test
- verify-pack:
- runs-on: ubuntu-latest
- needs: build-and-test
- steps:
- - uses: actions/checkout@v4
- - uses: pnpm/action-setup@v4
- with:
- version: 9
- - uses: actions/setup-node@v4
- with:
- node-version: 22
- cache: pnpm
- - run: pnpm install --frozen-lockfile
- - run: pnpm build
- - name: Rewrite package versions for CI pack verification
- run: |
- set -euo pipefail
- CI_PACK_VERSION="0.0.0-ci.${GITHUB_RUN_ID}.${GITHUB_RUN_ATTEMPT}"
- node scripts/set-package-versions.mjs "$CI_PACK_VERSION" --root .
- echo "CI_PACK_VERSION=$CI_PACK_VERSION" >> "$GITHUB_ENV"
- - name: Verify CI-only tarballs
- run: |
- set -euo pipefail
- for pkg in packages/core packages/studio packages/cli; do
- echo "--- Checking $pkg ---"
- cd "$pkg"
- PACKDIR=$(mktemp -d)
- npm pack --pack-destination "$PACKDIR" 2>/dev/null
- TGZ=$(ls "$PACKDIR"/*.tgz)
- PACKED_PKG=$(tar -xOf "$TGZ" package/package.json)
- PACKED_VERSION=$(printf '%s' "$PACKED_PKG" | node -pe "JSON.parse(require('fs').readFileSync(0, 'utf8')).version")
- if [ "$PACKED_VERSION" != "$CI_PACK_VERSION" ]; then
- echo "FAIL: $pkg tarball version is $PACKED_VERSION, expected CI-only $CI_PACK_VERSION"
- rm -rf "$PACKDIR"
- exit 1
- fi
- if echo "$PACKED_PKG" | grep -q '"workspace:'; then
- echo "FAIL: $pkg tarball still contains workspace: protocol"
- echo "$PACKED_PKG" | grep 'workspace:'
- rm -rf "$PACKDIR"
- exit 1
- fi
- echo "OK: $pkg tarball is CI-only and clean"
- rm -rf "$PACKDIR"
- cd - >/dev/null
- done
|