当前位置: 首页 > 知识库问答 >
问题:

如何在github操作工作流ci中通过npm安装私有github存储库

云长恨
2023-03-14

我试图通过运行npm install在github工作流ci中安装npm依赖项。但是,我得到以下错误:

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.

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

包裹json

  ...
  "dependencies": {
    "some-pacakage": "git+ssh://git@github.com/private-org/private-repo.gitt",
  },
  ...

npm正在通过github安装此某些软件包。回购在运行工作流的同一组织内。要在本地解决此问题,请在与组织绑定的github帐户上设置ssh密钥。

但我如何解决这个问题,使其能够通过github repo在workfow ci中安装该软件包,而我不使用我的个人github帐户。


共有3个答案

松俊美
2023-03-14

Travis迁移到GitHub Actions时,我遇到了类似的问题。

基本上,您需要做的是如何Git获取您的远程存储库。在包中。json“gitssh://git@使用github.com/private org/private repo.gitt“。因此,它试图使用ssh访问密钥获取repo。如果不添加访问密钥,它将失败。

相反,我们要做的是重新配置Git以使用HTTP身份验证。

下面是我如何在我的GitHub操作工作流中使用它的。我已将我的GitHub PAT令牌添加为GitHub操作中的秘密GA_令牌

  - name: Reconfigure git to use HTTP authentication
    run: |
      git config --global url.https://${{ secrets.GA_TOKEN }}@github.com/.insteadOf ssh://git@github.com/
  • 参考

夏侯阳
2023-03-14

私有存储库正在通过ssh安装。如果您在管道中设置了ssh密钥,它将在尝试安装时使用该ssh密钥。

幸运的是,有一个github操作允许我们这样做https://github.com/webfactory/ssh-agent

以上npm安装添加以下内容:

  - uses: webfactory/ssh-agent@v0.2.0
  with:
    ssh-private-key: ${{ secrets.SSH_PRIVATE_KEY }} 

设置/先决条件

https://github.com/webfactory/ssh-agent#usage

>

确保私钥上没有设置密码短语。

在存储库中,转到“设置”

钱照
2023-03-14

标准令牌没有足够的权限:

令牌的权限仅限于包含工作流的存储库。有关更多信息,请参阅“GITHUB_令牌的权限”。

您必须手动创建个人访问令牌,以访问包:

如果您需要一个令牌,它需要在GITHUB_TOKEN中不可用的权限,您可以创建一个个人访问令牌,并将其设置为存储库中的秘密:

  1. 使用或创建具有该存储库相应权限的令牌。有关更多信息,请参阅“为命令行创建个人访问令牌”
  2. 将令牌作为机密添加到工作流的存储库中,并使用${{secrets.secret\u NAME}语法引用它。有关更多信息,请参阅“创建和使用加密机密”

来源:https://help.github.com/en/actions/configuring-and-managing-workflows/authenticating-with-the-github_token

 类似资料:
  • 问题内容: 我正在尝试通过npm安装github私有存储库,其中包括其他私有github存储库作为依赖项。 尝试了很多方法和帖子,但是都没有用。这是我在做什么: 在package.json中就像: 正确的方法是什么? 问题答案: 以下在我需要的所有情况下都可以正常工作:

  • 我正试图通过遵循本教程,使用GitHub操作构建docker映像并将其推送到Amazon ECR 我正在尝试为此repo设置GitHub操作,因此我在<代码>中创建了一个新的工作流。github/workflows目录。 DockerFile已成功创建并生成。 现在,在创建

  • 问题内容: 我希望Jenkins从托管在Github上的私有存储库自动获取数据。但是我不知道如何完成该任务。尝试了文档,为jenkins用户生成了ssh- key,我所看到的就是:“无法克隆存储库”。我已经检查过网址-它们是有效的。 任何线索,也许您知道一些描述此类内容的文档/博客/内容? 问题答案: 也许GitHub 对您正在寻找的部署密钥提供支持?引用该页面: 什么时候应该使用部署密钥? 很简

  • 错误------------------------------------------------- npm安装失败,代码为%1 npm错误!代码为npm错误!syscall spawn git npm错误!路径git npm错误!errno ENOENT npm err!执行时发生错误:npm错误!Enent未定义的ls-remote-h-t ssh:/git@github.com/priva

  • 根据这些说明,我将Maven包部署到github。https://help.github.com/en/github/managing-packages-with-github-packages/configuring-apache-maven-for-use-with-github-packages#installing-a-package 这起作用了。 现在,我正在安装第二个Maven项目,它