[英]Install an npm module from a private GitHub repository using GitHub Actions
我正在尝试使用 GitHub 操作为 Node.js 项目运行构建。 作为npm install
的一部分,我需要直接从私有 GitHub 存储库(不是来自 GPR)安装 npm 模块。
在package.json
我有:
"dependencies": {
...
"my-module": "github:<org>/<my-module>#master",
...
},
但是,在运行npm install
时,我得到:
npm 错误。 git@github:com。 权限被拒绝(公钥):npm ERR。 致命:无法从远程存储库中读取。
该存储库是我自己组织的一部分,并且在本地(即从我的机器上)它可以工作。 我怎样才能让这个运行?
我已经尝试设置NODE_AUTH_TOKEN
环境变量,但没有任何区别。 尽管您经常发现此建议,但它似乎只针对 GPR。 我想避免的是必须将令牌硬编码到package.json
文件中。 对此有什么想法吗?
这就是我设法从私有 GitHub 存储库安装依赖项的方式。
package.json 中的依赖可以添加如下。 github:
前缀是可选的。 指定#branch
或#tag
也是可选的。
"dependencies": {
...
"myrepo": "username/myrepo#master",
"myotherrepo": "github:username/myotherrepo"
},
这是一个示例工作流程。 PAT
是一个repo
范围的Personal Access Token 。 在actions/checkout
上禁用持久凭证很重要,否则它们将覆盖您的PAT
。 请注意, git config
更改在步骤之间持续存在,因此您只需为每个作业运行一次。
- uses: actions/checkout@v2
with:
persist-credentials: false
- uses: actions/setup-node@v1
with:
node-version: 12.x
- run: git config --global url."https://${{ secrets.PAT }}@github.com/".insteadOf ssh://git@github.com/
- run: npm ci
...
从错误和您包含依赖项的方式(在 package.json 中)来看,您似乎没有传递身份验证凭据(令牌、ssh。
有关作为依赖项的 Git URL 的详细信息,请参阅此文档
它可以通过 https 和 oauth 或 ssh 完成。
https 和 oauth : 创建一个具有“repo”范围的访问令牌,然后使用以下语法:
"package-name": "git+https://<github_token>:x-oauth-basic@github.com/<user>/<repo>.git"
或者
ssh :设置 ssh 然后使用以下语法:
"package-name": "git+ssh://git@github.com:<user>/<repo>.git"
(note the use of colon instead of slash before user)
一个非常简单的解决方案对我有用。 您创建一个新密钥,为其授予对存储库的只读访问权限,并且在构建过程中使用该密钥。 您可以添加多个键。
基于以下操作 - https://github.com/webfactory/ssh-agent
package.json
中提供一个私有repo,格式如下:"dependencies": {
"repo": "git+ssh://git@github.com:user/private_repo.git",
}
ssh-keygen -f my_key
my_key.pub
的内容REPO_SSH_KEY
的 GitHub 操作密钥。 使用my_key
的内容——它是一个私钥# ...
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Add SSH key to chekout a private repo
uses: webfactory/ssh-agent@v0.5.4
with:
ssh-private-key: ${{ secrets.REPO_SSH_KEY }}
- name: Checkout code
uses: actions/checkout@v2
# ... the rest steps
您应该编辑您的.npmrc
文件。 你也可以使用npm config
npm config set @myco:registry http://reg.example.com
有关更多信息,请参阅以下主题: 有没有办法在单个 npmrc 文件中配置多个注册表
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.