|
56 | 56 | uses: useblacksmith/setup-node@v5 |
57 | 57 | with: |
58 | 58 | node-version-file: '.nvmrc' |
| 59 | + registry-url: 'https://registry.npmjs.org' |
59 | 60 |
|
60 | 61 | - name: Setup pnpm |
61 | 62 | uses: pnpm/action-setup@v4 |
@@ -122,9 +123,46 @@ jobs: |
122 | 123 | run: | |
123 | 124 | pnpm exec lerna version ${{ steps.determine-publish-type.outputs.version_args }} |
124 | 125 |
|
| 126 | + # We use pnpm to pack (resolves catalog: protocol) then npm to publish (OIDC works). |
| 127 | + # lerna publish doesn't resolve pnpm's catalog: protocol, and pnpm publish doesn't |
| 128 | + # properly handle npm's OIDC token exchange. |
125 | 129 | - name: Publish to npm (OIDC) |
126 | 130 | run: | |
127 | | - pnpm exec lerna publish from-git --yes --dist-tag "${{ steps.determine-publish-type.outputs.dist_tag }}" |
| 131 | + DIST_TAG="${{ steps.determine-publish-type.outputs.dist_tag }}" |
| 132 | + PUBLISHED_PACKAGES="[]" |
| 133 | +
|
| 134 | + # Find all packages, pack with pnpm (resolves catalog:), publish with npm (OIDC) |
| 135 | + for pkg_json in packages/*/package.json packages/wallets/*/package.json; do |
| 136 | + pkg_dir=$(dirname "$pkg_json") |
| 137 | + pkg_name=$(node -p "require('./$pkg_json').name") |
| 138 | + pkg_version=$(node -p "require('./$pkg_json').version") |
| 139 | + |
| 140 | + echo "📦 Publishing $pkg_name@$pkg_version" |
| 141 | + |
| 142 | + # Pack with pnpm to resolve catalog: dependencies |
| 143 | + cd "$pkg_dir" |
| 144 | + pnpm pack |
| 145 | + |
| 146 | + # Find the tarball |
| 147 | + tarball=$(ls *.tgz 2>/dev/null | head -1) |
| 148 | + |
| 149 | + if [ -n "$tarball" ]; then |
| 150 | + # Publish with npm for OIDC support |
| 151 | + if npm publish "$tarball" --access public --tag "$DIST_TAG" --provenance; then |
| 152 | + PUBLISHED_PACKAGES=$(echo "$PUBLISHED_PACKAGES" | node -p "JSON.stringify([...JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')), {name:'$pkg_name',version:'$pkg_version'}])") |
| 153 | + fi |
| 154 | + rm -f "$tarball" |
| 155 | + else |
| 156 | + echo "⚠️ No tarball found for $pkg_name" |
| 157 | + fi |
| 158 | + |
| 159 | + cd - > /dev/null |
| 160 | + done |
| 161 | +
|
| 162 | + # Generate publish summary for Slack notification |
| 163 | + echo "{\"publishedPackages\":$PUBLISHED_PACKAGES}" > pnpm-publish-summary.json |
| 164 | + echo "📋 Published packages summary:" |
| 165 | + cat pnpm-publish-summary.json |
128 | 166 |
|
129 | 167 | - name: Push tags to git |
130 | 168 | run: | |
|
0 commit comments