我正在尝试使用GitHub操作运行Node.js项目的构建。作为npm install
的一部分,我需要直接从私有GitHub存储库安装npm模块(而不是从GPR!).
在package.json
中,我有:
"dependencies": {
...
"my-module": "github:<org>/<my-module>#master",
...
},
但是,当运行npm install
时,我得到:
npm错误!email protected(https://stackoverflow.com/cdn-cgi/l/email-protection):权限被拒绝(公钥)。npm ERR!fatal:无法从远程存储库读取。
存储库是我自己组织的一部分,在本地(即从我的机器)它工作。我该怎么办?
我已经试过设置NODE_AUTH_TOKEN
环境变量,但没有什么区别。虽然你经常发现这个建议,但它似乎只针对GPR。我想避免的是必须将令牌硬编码到package.json
文件中。对此有什么想法吗?
5条答案
按热度按时间iezvtpos1#
这就是我如何设法从私有GitHub存储库安装依赖项的方法。
package.json中的参数可以按如下方式添加。
github:
前缀是可选的。#branch
或#tag
也是可选的。下面是一个示例工作流。
PAT
是一个repo
作用域Personal Access Token。在actions/checkout
上禁用持久化凭据非常重要,否则它们将覆盖您的PAT
。请注意,git config
更改在步骤之间持续存在,因此您只需在每个作业中运行一次。pexxcrt22#
一个非常简单的解决方案,只需要对存储库进行只读访问。使用GitHub的Deploy Keys和以下操作https://github.com/webfactory/ssh-agent
1.在
package.json
中提供私有repo,格式如下:2.在本地机器上生成部署密钥。使用空密码
3.通过GitHub UI创建部署密钥(首选只读)。使用
my_key.pub
的内容4.通过GitHub UI为目标存储库创建一个名为
REPO_SSH_KEY
的GitHub Actions secret-将运行GitHub Actions的那个。使用my_key
的内容-它是一个私钥5.更新GitHub操作工作流文件,如下所示
2j4z5cfb3#
从错误和您包含依赖项的方式(在package.json中)来看,似乎您没有传递身份验证凭据(token,ssh。
请参考此文档了解Git URL作为副本的详细信息
它可以通过https和oauth或ssh完成。
https和oauth:具有“repo”作用域的create an access token,然后是use this syntax:
或
ssh:设置ssh,然后使用以下语法:
pxq42qpu4#
对我有用的。在root目录下创建一个npmrc文件,使用来自secrets的内置
GITHUB_TOKEN
。我还需要允许通过
Manage Actions access
从私有存储库使用操作对存储库进行读访问,以便GITHUB_TOKEN
工作。AFAIKGITHUB_TOKEN
的作用域为当前存储库。否则,您也可以将具有读取包权限的PAT(个人访问令牌)作为操作密码传递。我假设如果您使用
actions/setup-node@v3
来创建npmrc,也需要这样做。或者你把它作为一个env var传递。Access Example
yftpprvb5#
你应该编辑你的
.npmrc
文件。也可以使用npm config
npm config set @myco:registry http://reg.example.com
请参阅下面的线程了解更多信息:Is there any way to configure multiple registries in a single npmrc file