@@ -97,35 +97,34 @@ jobs:
9797 echo "=== Git tags ==="
9898 git tag
9999
100- - name : Extract npm token for semantic-release
100+ - name : Release with semantic-release
101+ id : release
102+ env :
103+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
104+ run : npx semantic-release
105+
106+ - name : Publish to npm using trusted publishing
101107 run : |
102- echo "=== Extracting npm token ==="
108+ echo "=== Publishing to npm with trusted publishing (OIDC) ==="
103109
104- # Copy .npmrc created by setup-node
110+ # Ensure .npmrc is available ( setup-node should have created it)
105111 if [ -f "$NPM_CONFIG_USERCONFIG" ]; then
106112 cp "$NPM_CONFIG_USERCONFIG" ~/.npmrc
107- echo "✓ Copied .npmrc to ~/.npmrc"
108-
109- # Extract token
110- NPM_TOKEN=$(grep '_authToken' ~/.npmrc | sed 's/.*_authToken=//' | head -1 | tr -d '\n\r\t ' || echo "")
113+ echo "✓ Using .npmrc for authentication"
114+ fi
115+
116+ # Get version from package.json (updated by semantic-release)
117+ VERSION=$(node -p "require('./package.json').version")
118+ CURRENT_TAG=$(git describe --tags --exact-match 2>/dev/null || echo "")
119+
120+ # Only publish if semantic-release created a new version
121+ if [ -n "$CURRENT_TAG" ]; then
122+ echo "New release detected: $CURRENT_TAG"
123+ echo "Publishing version: $VERSION"
111124
112- if [ -n "$NPM_TOKEN" ] && [ ${#NPM_TOKEN} -gt 10 ]; then
113- echo "::add-mask::$NPM_TOKEN"
114- echo "NPM_TOKEN=$NPM_TOKEN" >> $GITHUB_ENV
115- echo "✓ NPM_TOKEN extracted (length: ${#NPM_TOKEN} chars)"
116- echo ""
117- echo "Note: Token may not work for 'npm whoami' but should work for 'npm publish'"
118- echo "semantic-release will attempt to use it for publishing"
119- else
120- echo "✗ Could not extract valid token"
121- exit 1
122- fi
125+ # Publish using npm publish which supports OIDC/trusted publishing
126+ npm publish --provenance --access public
127+ echo "✓ Published $VERSION to npm"
123128 else
124- echo "✗ .npmrc not found"
125- exit 1
129+ echo "No new release created, skipping npm publish"
126130 fi
127-
128- - name : Release
129- env :
130- GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
131- run : npx semantic-release
0 commit comments