Commit 5f48c73

Anton Golub <antongolub@antongolub.com>
2025-02-22 18:15:17
ci: separate build and publish steps (#1106)
* chore: up dev deps * ci: separate build and publish steps
1 parent be0990f
.github/workflows/dev-publish.yml
@@ -4,7 +4,31 @@ on:
   workflow_dispatch:
 
 jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          persist-credentials: false
+      - uses: actions/setup-node@v4
+        with:
+          node-version: 22
+          cache: 'npm'
+      - run: npm ci
+      - run: npm test
+        env:
+          FORCE_COLOR: 3
+      - run: node scripts/clean-package-json.mjs
+      - uses: actions/upload-artifact@v4
+        with:
+          name: build-${{ github.run_id }}
+          path: |
+            build
+            package.json
+          retention-days: 1
+
   publish:
+    needs: build
     runs-on: ubuntu-latest
     permissions:
       checks: read
@@ -20,14 +44,12 @@ jobs:
         with:
           node-version: 22
           cache: 'npm'
-      - run: npm ci
-      - run: npm test
-        env:
-          FORCE_COLOR: 3
+      - uses: actions/download-artifact@v4
+        with:
+          name: build-${{ github.run_id }}
       - run: echo "//wombat-dressing-room.appspot.com/:_authToken=$AUTH_TOKEN" >> .npmrc
         env:
           AUTH_TOKEN: ${{ secrets.AUTH_TOKEN }}
       - run: |
           npm version $(node --eval="process.stdout.write(require('./package.json').version)")-dev.$(git rev-parse --short HEAD) --no-git-tag-version
-          node scripts/clean-package-json.mjs
           npm publish --provenance --access=public --no-git-tag-version --tag dev
.github/workflows/npm-publish.yml
@@ -6,7 +6,31 @@ on:
     types: [created]
 
 jobs:
+  build:
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v4
+        with:
+          persist-credentials: false
+      - uses: actions/setup-node@v4
+        with:
+          node-version: 22
+          cache: 'npm'
+      - run: npm ci
+      - run: npm test
+        env:
+          FORCE_COLOR: 3
+      - run: node scripts/clean-package-json.mjs
+      - uses: actions/upload-artifact@v4
+        with:
+          name: build-${{ github.run_id }}
+          path: |
+            build
+            package.json
+          retention-days: 1
+
   publish:
+    needs: build
     runs-on: ubuntu-latest
     permissions:
       checks: read
@@ -22,11 +46,9 @@ jobs:
         with:
           node-version: 22
           cache: 'npm'
-      - run: npm ci
-      - run: npm test
-        env:
-          FORCE_COLOR: 3
-      - run: node scripts/clean-package-json.mjs
+      - uses: actions/download-artifact@v4
+        with:
+          name: build-${{ github.run_id }}
       - run: echo "//wombat-dressing-room.appspot.com/:_authToken=$AUTH_TOKEN" >> .npmrc
         env:
           AUTH_TOKEN: ${{ secrets.AUTH_TOKEN }}
package-lock.json
@@ -12,10 +12,10 @@
         "zx": "build/cli.js"
       },
       "devDependencies": {
-        "@size-limit/file": "11.1.6",
+        "@size-limit/file": "11.2.0",
         "@types/fs-extra": "11.0.4",
         "@types/minimist": "1.2.5",
-        "@types/node": ">=20.11.30",
+        "@types/node": ">=22.13.5",
         "@types/which": "3.0.4",
         "@webpod/ingrid": "0.0.0-beta.3",
         "@webpod/ps": "0.1.0",
@@ -38,15 +38,15 @@
         "get-port": "7.1.0",
         "globby": "14.0.2",
         "jsr": "0.13.3",
-        "lefthook": "1.10.10",
+        "lefthook": "1.10.11",
         "madge": "8.0.0",
         "minimist": "1.2.8",
         "node-fetch-native": "1.6.4",
-        "prettier": "3.5.0",
-        "size-limit": "11.1.6",
+        "prettier": "3.5.2",
+        "size-limit": "11.2.0",
         "ts-node": "10.9.2",
         "tsd": "0.31.2",
-        "tsx": "4.19.2",
+        "tsx": "4.19.3",
         "typescript": "5.7.3",
         "vitepress": "1.6.3",
         "which": "5.0.0",
@@ -832,16 +832,16 @@
       }
     },
     "node_modules/@size-limit/file": {
-      "version": "11.1.6",
-      "resolved": "https://registry.npmjs.org/@size-limit/file/-/file-11.1.6.tgz",
-      "integrity": "sha512-ojzzJMrTfcSECRnaTjGy0wNIolTCRdyqZTSWG9sG5XEoXG6PNgHXDDS6gf6YNxnqb+rWfCfVe93u6aKi3wEocQ==",
+      "version": "11.2.0",
+      "resolved": "https://registry.npmjs.org/@size-limit/file/-/file-11.2.0.tgz",
+      "integrity": "sha512-OZHE3putEkQ/fgzz3Tp/0hSmfVo3wyTpOJSRNm6AmcwX4Nm9YtTfbQQ/hZRwbBFR23S7x2Sd9EbqYzngKwbRoA==",
       "dev": true,
       "license": "MIT",
       "engines": {
         "node": "^18.0.0 || >=20.0.0"
       },
       "peerDependencies": {
-        "size-limit": "11.1.6"
+        "size-limit": "11.2.0"
       }
     },
     "node_modules/@swc-node/core": {
@@ -1208,9 +1208,9 @@
       "license": "MIT"
     },
     "node_modules/@types/node": {
-      "version": "22.13.1",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.1.tgz",
-      "integrity": "sha512-jK8uzQlrvXqEU91UxiK5J7pKHyzgnI1Qnl0QDHIgVGuolJhRb9EEl28Cj9b3rGR8B2lhFCtvIm5os8lFnO/1Ew==",
+      "version": "22.13.5",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-22.13.5.tgz",
+      "integrity": "sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
@@ -3787,9 +3787,9 @@
       "license": "MIT"
     },
     "node_modules/lefthook": {
-      "version": "1.10.10",
-      "resolved": "https://registry.npmjs.org/lefthook/-/lefthook-1.10.10.tgz",
-      "integrity": "sha512-YW0fTONgOXsephvXq2gIFbegCW19MHCyKYX7JDWmzVF1ZiVMnDBYUL/SP3i0RtFvlCmqENl4SgKwYYQGUMnvig==",
+      "version": "1.10.11",
+      "resolved": "https://registry.npmjs.org/lefthook/-/lefthook-1.10.11.tgz",
+      "integrity": "sha512-UIH7g6VhCt0Vmfojtl75xOwxHPSC11nG1CCanDHsiBy8TAa2WI6SWgpVXxJOuAEakzj4DFLZyxFI26jJ1mu/vg==",
       "dev": true,
       "hasInstallScript": true,
       "license": "MIT",
@@ -3797,22 +3797,22 @@
         "lefthook": "bin/index.js"
       },
       "optionalDependencies": {
-        "lefthook-darwin-arm64": "1.10.10",
-        "lefthook-darwin-x64": "1.10.10",
-        "lefthook-freebsd-arm64": "1.10.10",
-        "lefthook-freebsd-x64": "1.10.10",
-        "lefthook-linux-arm64": "1.10.10",
-        "lefthook-linux-x64": "1.10.10",
-        "lefthook-openbsd-arm64": "1.10.10",
-        "lefthook-openbsd-x64": "1.10.10",
-        "lefthook-windows-arm64": "1.10.10",
-        "lefthook-windows-x64": "1.10.10"
+        "lefthook-darwin-arm64": "1.10.11",
+        "lefthook-darwin-x64": "1.10.11",
+        "lefthook-freebsd-arm64": "1.10.11",
+        "lefthook-freebsd-x64": "1.10.11",
+        "lefthook-linux-arm64": "1.10.11",
+        "lefthook-linux-x64": "1.10.11",
+        "lefthook-openbsd-arm64": "1.10.11",
+        "lefthook-openbsd-x64": "1.10.11",
+        "lefthook-windows-arm64": "1.10.11",
+        "lefthook-windows-x64": "1.10.11"
       }
     },
     "node_modules/lefthook-darwin-arm64": {
-      "version": "1.10.10",
-      "resolved": "https://registry.npmjs.org/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.10.10.tgz",
-      "integrity": "sha512-hEypKdwWpmNSl4Q8eJxgmlGb2ybJj1+W5/v13Mxc+ApEmjbpNiJzPcdjC9zyaMEpPK4EybiHy8g5ZC0dLOwkpA==",
+      "version": "1.10.11",
+      "resolved": "https://registry.npmjs.org/lefthook-darwin-arm64/-/lefthook-darwin-arm64-1.10.11.tgz",
+      "integrity": "sha512-yFsuEKjO5FP1svuv7m+epGsKmec8hHWxYIAnL2sDMiVR+rbSrd4zKWCGis7hdu/H0ltR/3NbHWzM3NFcxmDalg==",
       "cpu": [
         "arm64"
       ],
@@ -3823,6 +3823,132 @@
         "darwin"
       ]
     },
+    "node_modules/lefthook-darwin-x64": {
+      "version": "1.10.11",
+      "resolved": "https://registry.npmjs.org/lefthook-darwin-x64/-/lefthook-darwin-x64-1.10.11.tgz",
+      "integrity": "sha512-mWoMnZzDsV5RnfNmH7iDtlGCi+2DVhnS2IgiBqyYF2nS1Qcitq6heFvs6bwwMY1eC2brtTn0BeuqzEV6Ye635Q==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "darwin"
+      ]
+    },
+    "node_modules/lefthook-freebsd-arm64": {
+      "version": "1.10.11",
+      "resolved": "https://registry.npmjs.org/lefthook-freebsd-arm64/-/lefthook-freebsd-arm64-1.10.11.tgz",
+      "integrity": "sha512-f96TplcyqUQtUE41XnCLkmCJXgzeJB0spzy/0k/k/DhMDNWOJZC72a08XfxyCIOCg9b5XXBP+jjmVWB/4ZcyJA==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ]
+    },
+    "node_modules/lefthook-freebsd-x64": {
+      "version": "1.10.11",
+      "resolved": "https://registry.npmjs.org/lefthook-freebsd-x64/-/lefthook-freebsd-x64-1.10.11.tgz",
+      "integrity": "sha512-9WVlSIzyb6U8kSGb9sFyeTWL4XesCGIWwElGIoDo6q3K4BnlAVC9gfy6aoBA795r7ccOvDvJu8b/G+tE3Qk1Jg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "freebsd"
+      ]
+    },
+    "node_modules/lefthook-linux-arm64": {
+      "version": "1.10.11",
+      "resolved": "https://registry.npmjs.org/lefthook-linux-arm64/-/lefthook-linux-arm64-1.10.11.tgz",
+      "integrity": "sha512-EvFeBjXsUG45qbX5Xn7YQYjmp+jMhv9E2p/DHX+1aUschG5xKiGlVVEnjyb1uvd7fgnKUCp1IwcJ/dtBGEbI5w==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/lefthook-linux-x64": {
+      "version": "1.10.11",
+      "resolved": "https://registry.npmjs.org/lefthook-linux-x64/-/lefthook-linux-x64-1.10.11.tgz",
+      "integrity": "sha512-+FR7P6BYWV+FsgDCioJkF+z6q19+FR1G5cFB1b2RhdFU0/ARd9EvphBps0t84cmjwilVvB8jEUXSieJx2AFfJg==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "linux"
+      ]
+    },
+    "node_modules/lefthook-openbsd-arm64": {
+      "version": "1.10.11",
+      "resolved": "https://registry.npmjs.org/lefthook-openbsd-arm64/-/lefthook-openbsd-arm64-1.10.11.tgz",
+      "integrity": "sha512-yqJmk35FGLwV+2FtT35akpekTQXccfBMImPfV0WO4xxhqhzCEqYhcIC7snLfmNKffBbTZr4Dih6BVWP0b70Xtw==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "openbsd"
+      ]
+    },
+    "node_modules/lefthook-openbsd-x64": {
+      "version": "1.10.11",
+      "resolved": "https://registry.npmjs.org/lefthook-openbsd-x64/-/lefthook-openbsd-x64-1.10.11.tgz",
+      "integrity": "sha512-DEMaaiCLXZQECssg5SYXDEPm6d0k7FtRSCKdBELIvzCwFGG5dmLo9AdRBwog60Y9eqGMa4a34tVs/jWNC2fzhw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "openbsd"
+      ]
+    },
+    "node_modules/lefthook-windows-arm64": {
+      "version": "1.10.11",
+      "resolved": "https://registry.npmjs.org/lefthook-windows-arm64/-/lefthook-windows-arm64-1.10.11.tgz",
+      "integrity": "sha512-ZW4xhsdffWS2CvE7VvrS4lcYHVOn1bcqFwd0vGhfz6mK6IocjOChLwLitRl816UOZd5F3qvQet/MndHsEbuP6Q==",
+      "cpu": [
+        "arm64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
+    "node_modules/lefthook-windows-x64": {
+      "version": "1.10.11",
+      "resolved": "https://registry.npmjs.org/lefthook-windows-x64/-/lefthook-windows-x64-1.10.11.tgz",
+      "integrity": "sha512-G4Gh96AKp/pRDH6PE3UPhuAg+gOHBNaJAXq0/NJ1zb8qnadyPLf9Vk248AVW916v6UQBq75wIeAe1kjeaxa7Uw==",
+      "cpu": [
+        "x64"
+      ],
+      "dev": true,
+      "license": "MIT",
+      "optional": true,
+      "os": [
+        "win32"
+      ]
+    },
     "node_modules/lilconfig": {
       "version": "3.1.3",
       "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz",
@@ -4849,9 +4975,9 @@
       }
     },
     "node_modules/prettier": {
-      "version": "3.5.0",
-      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.0.tgz",
-      "integrity": "sha512-quyMrVt6svPS7CjQ9gKb3GLEX/rl3BCL2oa/QkNcXv4YNVBC9olt3s+H7ukto06q7B1Qz46PbrKLO34PR6vXcA==",
+      "version": "3.5.2",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz",
+      "integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==",
       "dev": true,
       "license": "MIT",
       "bin": {
@@ -5136,9 +5262,9 @@
       }
     },
     "node_modules/readdirp": {
-      "version": "4.1.1",
-      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz",
-      "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==",
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+      "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
       "dev": true,
       "license": "MIT",
       "engines": {
@@ -5514,19 +5640,19 @@
       }
     },
     "node_modules/size-limit": {
-      "version": "11.1.6",
-      "resolved": "https://registry.npmjs.org/size-limit/-/size-limit-11.1.6.tgz",
-      "integrity": "sha512-S5ux2IB8rU26xwVgMskmknGMFkieaIAqDLuwgKiypk6oa4lFsie8yFPrzRFV+yrLDY2GddjXuCaVk5PveVOHiQ==",
+      "version": "11.2.0",
+      "resolved": "https://registry.npmjs.org/size-limit/-/size-limit-11.2.0.tgz",
+      "integrity": "sha512-2kpQq2DD/pRpx3Tal/qRW1SYwcIeQ0iq8li5CJHQgOC+FtPn2BVmuDtzUCgNnpCrbgtfEHqh+iWzxK+Tq6C+RQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
         "bytes-iec": "^3.1.1",
-        "chokidar": "^4.0.1",
-        "jiti": "^2.0.0",
-        "lilconfig": "^3.1.2",
-        "nanospinner": "^1.1.0",
-        "picocolors": "^1.1.0",
-        "tinyglobby": "^0.2.7"
+        "chokidar": "^4.0.3",
+        "jiti": "^2.4.2",
+        "lilconfig": "^3.1.3",
+        "nanospinner": "^1.2.2",
+        "picocolors": "^1.1.1",
+        "tinyglobby": "^0.2.11"
       },
       "bin": {
         "size-limit": "bin.js"
@@ -5971,17 +6097,20 @@
       }
     },
     "node_modules/tinyglobby": {
-      "version": "0.2.10",
-      "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz",
-      "integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==",
+      "version": "0.2.12",
+      "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz",
+      "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "fdir": "^6.4.2",
+        "fdir": "^6.4.3",
         "picomatch": "^4.0.2"
       },
       "engines": {
         "node": ">=12.0.0"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/SuperchupuDev"
       }
     },
     "node_modules/tinyglobby/node_modules/fdir": {
@@ -6205,13 +6334,13 @@
       "license": "0BSD"
     },
     "node_modules/tsx": {
-      "version": "4.19.2",
-      "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.2.tgz",
-      "integrity": "sha512-pOUl6Vo2LUq/bSa8S5q7b91cgNSjctn9ugq/+Mvow99qW6x/UZYwzxy/3NmqoT66eHYfCVvFvACC58UBPFf28g==",
+      "version": "4.19.3",
+      "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz",
+      "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==",
       "dev": true,
       "license": "MIT",
       "dependencies": {
-        "esbuild": "~0.23.0",
+        "esbuild": "~0.25.0",
         "get-tsconfig": "^4.7.5"
       },
       "bin": {
package.json
@@ -93,10 +93,10 @@
     "test:workflow": "zizmor .github/workflows -v -p"
   },
   "devDependencies": {
-    "@size-limit/file": "11.1.6",
+    "@size-limit/file": "11.2.0",
     "@types/fs-extra": "11.0.4",
     "@types/minimist": "1.2.5",
-    "@types/node": ">=20.11.30",
+    "@types/node": ">=22.13.5",
     "@types/which": "3.0.4",
     "@webpod/ingrid": "0.0.0-beta.3",
     "@webpod/ps": "0.1.0",
@@ -119,15 +119,15 @@
     "get-port": "7.1.0",
     "globby": "14.0.2",
     "jsr": "0.13.3",
-    "lefthook": "1.10.10",
+    "lefthook": "1.10.11",
     "madge": "8.0.0",
     "minimist": "1.2.8",
     "node-fetch-native": "1.6.4",
-    "prettier": "3.5.0",
-    "size-limit": "11.1.6",
+    "prettier": "3.5.2",
+    "size-limit": "11.2.0",
     "ts-node": "10.9.2",
     "tsd": "0.31.2",
-    "tsx": "4.19.2",
+    "tsx": "4.19.3",
     "typescript": "5.7.3",
     "vitepress": "1.6.3",
     "which": "5.0.0",