Kay*_*Kay 6 git github node.js github-actions
我正在尝试通过运行在 github 工作流程 ci 中安装 npm 依赖项npm install。但是我收到以下错误:
npm ERR! Error while executing:
npm ERR! /usr/bin/git ls-remote -h -t ssh://git@github.com/private-org/private-repo.git
npm ERR!
npm ERR! Warning: Permanently added the RSA host key for IP address 'removed' to the list of known hosts.
npm ERR! git@github.com: Permission denied (publickey).
npm ERR! fatal: Could not read from remote repository.
Run Code Online (Sandbox Code Playgroud)
ci.yml
name: CI
on:
push:
branches: [master ]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Use Node.js
uses: actions/setup-node@v1
with:
node-version: '12.x'
- run: node --version
- run: npm install
Run Code Online (Sandbox Code Playgroud)
包.json
...
"dependencies": {
"some-pacakage": "git+ssh://git@github.com/private-org/private-repo.gitt",
},
...
Run Code Online (Sandbox Code Playgroud)
这some-package是由 npm 通过 github 安装的。该存储库与运行工作流的组织位于同一组织内。要在本地解决此问题,您需要在与该组织关联的 github 帐户上设置 ssh 密钥。
但是我怎样才能解决这个问题,以便它能够通过工作流 ci 中的 github 存储库安装该包,而我不使用我的个人 github 帐户。
私有存储库正在通过 ssh 安装。如果您在管道中设置 ssh 密钥,它将在尝试安装时使用该 ssh 密钥。
幸运的是,有一个 github 操作可以让我们做到这一点https://github.com/webfactory/ssh-agent
在 npm install 上面添加以下内容:
- uses: webfactory/ssh-agent@v0.2.0
with:
ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }}
Run Code Online (Sandbox Code Playgroud)
设置/先决条件
https://github.com/webfactory/ssh-agent#usage
创建具有足够访问权限的 SSH 密钥。出于安全原因,请勿使用您的个人 SSH 密钥,而应设置一个专用密钥以在 GitHub Actions 中使用。如果您对此步骤不确定,请参阅下面的一些提示。
确保您没有在私钥上设置密码。
在您的存储库中,转到“设置”>“秘密”菜单并创建一个新秘密。在此示例中,我们将其称为 SSH_PRIVATE_KEY。将 SSH 私钥文件的内容放入内容字段中。该密钥应以 -----BEGIN ... PRIVATE KEY----- 开头,由多行组成,并以 -----END ... PRIVATE KEY----- 结束。
标准令牌没有足够的权限:
令牌的权限仅限于包含您的工作流程的存储库。有关详细信息,请参阅“权限
GITHUB_TOKEN”。
您必须手动创建一个个人访问令牌来提供对包的访问权限:
如果您需要的令牌需要的权限在 中不可用
GITHUB_TOKEN,您可以创建个人访问令牌并将其设置为存储库中的秘密:
- 使用或创建具有该存储库适当权限的令牌。有关更多信息,请参阅“为命令行创建个人访问令牌”。
- 将令牌作为机密添加到工作流程的存储库中,并使用
${{ secrets.SECRET_NAME }}语法引用它。有关详细信息,请参阅“创建和使用加密机密”。
| 归档时间: |
|
| 查看次数: |
5149 次 |
| 最近记录: |