fix(ci): strip _authToken from .npmrc so OIDC takes precedence
After switching to npm Trusted Publishing the publish step still
returned 'PUT 404' because actions/setup-node injects an
'//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}' line into
.npmrc. With NODE_AUTH_TOKEN unset that placeholder evaluates to
an empty string, so npm tries an empty token before reaching for
the OIDC ID token and the registry rejects it.
- Add a step that strips any _authToken line from both project-
local and $HOME/.npmrc before publishing, so npm CLI proceeds
to OIDC token exchange.
- Bump publish commands to --loglevel verbose so future failures
expose the actual auth path (provenance attestation, OIDC
exchange, etc.) in workflow logs.
This commit is contained in:
@@ -352,6 +352,17 @@ jobs:
|
|||||||
if: steps.check.outputs.skip_all != 'true' && steps.download.outcome == 'success'
|
if: steps.check.outputs.skip_all != 'true' && steps.download.outcome == 'success'
|
||||||
run: npm install -g npm@latest
|
run: npm install -g npm@latest
|
||||||
|
|
||||||
|
- name: Strip token auth from .npmrc to force OIDC
|
||||||
|
if: steps.check.outputs.skip_all != 'true' && steps.download.outcome == 'success'
|
||||||
|
run: |
|
||||||
|
for f in .npmrc "$HOME/.npmrc"; do
|
||||||
|
if [ -f "$f" ]; then
|
||||||
|
sed -i.bak '/_authToken/d' "$f"
|
||||||
|
rm -f "$f.bak"
|
||||||
|
echo "Cleaned $f"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
- name: Publish oh-my-opencode-${{ matrix.platform }}
|
- name: Publish oh-my-opencode-${{ matrix.platform }}
|
||||||
if: steps.check.outputs.skip_opencode != 'true' && steps.download.outcome == 'success'
|
if: steps.check.outputs.skip_opencode != 'true' && steps.download.outcome == 'success'
|
||||||
env:
|
env:
|
||||||
@@ -361,9 +372,9 @@ jobs:
|
|||||||
cd packages/${{ matrix.platform }}
|
cd packages/${{ matrix.platform }}
|
||||||
|
|
||||||
if [ -n "$DIST_TAG" ]; then
|
if [ -n "$DIST_TAG" ]; then
|
||||||
npm publish --access public --provenance --tag "$DIST_TAG"
|
npm publish --access public --provenance --tag "$DIST_TAG" --loglevel verbose
|
||||||
else
|
else
|
||||||
npm publish --access public --provenance
|
npm publish --access public --provenance --loglevel verbose
|
||||||
fi
|
fi
|
||||||
timeout-minutes: 15
|
timeout-minutes: 15
|
||||||
|
|
||||||
@@ -382,8 +393,8 @@ jobs:
|
|||||||
package.json > tmp.json && mv tmp.json package.json
|
package.json > tmp.json && mv tmp.json package.json
|
||||||
|
|
||||||
if [ -n "$DIST_TAG" ]; then
|
if [ -n "$DIST_TAG" ]; then
|
||||||
npm publish --access public --provenance --tag "$DIST_TAG"
|
npm publish --access public --provenance --tag "$DIST_TAG" --loglevel verbose
|
||||||
else
|
else
|
||||||
npm publish --access public --provenance
|
npm publish --access public --provenance --loglevel verbose
|
||||||
fi
|
fi
|
||||||
timeout-minutes: 15
|
timeout-minutes: 15
|
||||||
|
|||||||
@@ -169,6 +169,17 @@ jobs:
|
|||||||
bunx tsc --emitDeclarationOnly
|
bunx tsc --emitDeclarationOnly
|
||||||
bun run build:schema
|
bun run build:schema
|
||||||
|
|
||||||
|
- name: Strip token auth from .npmrc to force OIDC
|
||||||
|
if: steps.check.outputs.skip != 'true'
|
||||||
|
run: |
|
||||||
|
for f in .npmrc "$HOME/.npmrc"; do
|
||||||
|
if [ -f "$f" ]; then
|
||||||
|
sed -i.bak '/_authToken/d' "$f"
|
||||||
|
rm -f "$f.bak"
|
||||||
|
echo "Cleaned $f"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
- name: Publish oh-my-opencode
|
- name: Publish oh-my-opencode
|
||||||
if: steps.check.outputs.skip != 'true'
|
if: steps.check.outputs.skip != 'true'
|
||||||
env:
|
env:
|
||||||
@@ -176,9 +187,9 @@ jobs:
|
|||||||
NPM_CONFIG_PROVENANCE: true
|
NPM_CONFIG_PROVENANCE: true
|
||||||
run: |
|
run: |
|
||||||
if [ -n "$DIST_TAG" ]; then
|
if [ -n "$DIST_TAG" ]; then
|
||||||
npm publish --access public --provenance --tag "$DIST_TAG"
|
npm publish --access public --provenance --tag "$DIST_TAG" --loglevel verbose
|
||||||
else
|
else
|
||||||
npm publish --access public --provenance
|
npm publish --access public --provenance --loglevel verbose
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Check if oh-my-openagent already published
|
- name: Check if oh-my-openagent already published
|
||||||
@@ -213,9 +224,9 @@ jobs:
|
|||||||
' package.json > tmp.json && mv tmp.json package.json
|
' package.json > tmp.json && mv tmp.json package.json
|
||||||
|
|
||||||
if [ -n "$DIST_TAG" ]; then
|
if [ -n "$DIST_TAG" ]; then
|
||||||
npm publish --access public --provenance --tag "$DIST_TAG"
|
npm publish --access public --provenance --tag "$DIST_TAG" --loglevel verbose
|
||||||
else
|
else
|
||||||
npm publish --access public --provenance
|
npm publish --access public --provenance --loglevel verbose
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Restore package.json
|
- name: Restore package.json
|
||||||
|
|||||||
Reference in New Issue
Block a user