ci.yml 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. name: CI
  2. on:
  3. push:
  4. branches: [master, main]
  5. pull_request:
  6. branches: [master, main]
  7. jobs:
  8. build-and-test:
  9. runs-on: ubuntu-latest
  10. strategy:
  11. matrix:
  12. node-version: [20, 22]
  13. steps:
  14. - uses: actions/checkout@v4
  15. - uses: pnpm/action-setup@v4
  16. with:
  17. version: 9
  18. - uses: actions/setup-node@v4
  19. with:
  20. node-version: ${{ matrix.node-version }}
  21. cache: pnpm
  22. - run: pnpm install --frozen-lockfile
  23. - run: pnpm build
  24. - run: pnpm test
  25. - run: pnpm verify:publish-manifests
  26. verify-pack:
  27. runs-on: ubuntu-latest
  28. needs: build-and-test
  29. steps:
  30. - uses: actions/checkout@v4
  31. - uses: pnpm/action-setup@v4
  32. with:
  33. version: 9
  34. - uses: actions/setup-node@v4
  35. with:
  36. node-version: 22
  37. cache: pnpm
  38. - run: pnpm install --frozen-lockfile
  39. - run: pnpm build
  40. - run: pnpm verify:publish-manifests
  41. - name: Verify no workspace:* in tarballs
  42. run: |
  43. set -euo pipefail
  44. for pkg in packages/core packages/cli; do
  45. echo "--- Checking $pkg ---"
  46. cd "$pkg"
  47. PACKDIR=$(mktemp -d)
  48. npm pack --pack-destination "$PACKDIR" 2>/dev/null
  49. TGZ=$(ls "$PACKDIR"/*.tgz)
  50. PACKED_PKG=$(tar -xOf "$TGZ" package/package.json)
  51. if echo "$PACKED_PKG" | grep -q '"workspace:'; then
  52. echo "FAIL: $pkg tarball still contains workspace: protocol"
  53. echo "$PACKED_PKG" | grep 'workspace:'
  54. rm -rf "$PACKDIR"
  55. exit 1
  56. fi
  57. echo "OK: $pkg tarball is clean"
  58. rm -rf "$PACKDIR"
  59. cd - >/dev/null
  60. done