GitHub Enterprise中semantic-release-action拉取npm包报401、404错误求助
问题现象
在GitHub Enterprise仓库使用semantic-release-action做语义化版本管理,前期运行正常,近期执行npm ci --only=prod时报401错误,提示GitHub Package Registry认证失败。完成认证配置后401错误消失,但出现新的404错误,提示无法从npm.pkg.github.com找到@actions/core@1.2.7包,提示该包不存在于actions所有者名下。
已执行的配置操作
- 新增Setup node步骤
- 在
.npmrc中配置了github.com个人账号生成、拥有读包和仓库权限的GITHUBCOM_TOKEN认证信息 - 配置
@yrshaikh对应的registry指向GitHub Packages
解决方案
- 优先做源的作用域分流,不要将全局默认registry设置为GitHub Packages。修改
.npmrc配置如下,仅@yrshaikh作用域的包走GitHub Packages,其余公共包走npm官方源,避免公共包去私有 registry 寻址:
@yrshaikh:registry=https://npm.pkg.github.com //npm.pkg.github.com/:_authToken=${GITHUBCOM_TOKEN} registry=https://registry.npmjs.org/
- 检查依赖锁文件(package-lock.json/yarn.lock等),确认是否将
@actions/core的下载源误锁定为GitHub Packages,如果存在可删除锁文件中对应条目后重新执行npm install生成新的锁文件,也可以单独执行npm install @actions/core@1.2.7 --registry=https://registry.npmjs.org更新依赖源信息。 - 若企业内部强制要求所有依赖必须走GitHub Packages拉取,联系仓库管理员配置GitHub Packages的上游代理规则,自动同步npm官方源的公共包,或者手动将
@actions/core@1.2.7同步发布到内部GitHub Packages的对应命名空间下。 - 若你的GitHub Enterprise实例未开启公共包同步,也可以临时将
@actions作用域的源单独配置为npm官方源,在.npmrc中新增如下配置即可:@actions:registry=https://registry.npmjs.org/
内容的提问来源于stack exchange,提问作者Yasser Shaikh
相关产品推荐
相关产品推荐

