Explorar el Código

ci: 使用临时版本校验打包产物

fanghanjun hace 6 meses
padre
commit
ccfb82e435
Se han modificado 1 ficheros con 16 adiciones y 3 borrados
  1. 16 3
      .github/workflows/ci.yml

+ 16 - 3
.github/workflows/ci.yml

@@ -49,23 +49,36 @@ jobs:
       - run: pnpm install --frozen-lockfile
       - run: pnpm build
 
-      - name: Verify no workspace:* in tarballs
+      - name: Rewrite package versions for CI pack verification
         run: |
           set -euo pipefail
-          for pkg in packages/core packages/cli; do
+          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 clean"
+            echo "OK: $pkg tarball is CI-only and clean"
             rm -rf "$PACKDIR"
             cd - >/dev/null
           done