Npm install on GitHub Pull Request 对从 public GitHub 存储库引用的包失败

Npm install on GitHub Pull Request fails for the package referenced from a public GitHub repository

package.json 文件中,我添加了一个引用我们的 public 存储库之一的依赖项。 package.json 中的依赖如下所示:

    "ffprobe-static": "git+https://github.com/company-name/repo-name.git",

我可以在本地成功 运行 npm install 并使用此依赖项,但是当我推送此代码时,我们执行 npm install 的 GitHub 工作流程失败并显示以下内容错误:

npm ERR! Warning: Permanently added the RSA host key for IP address 'x.x.x.x' to the list of known hosts.
npm ERR! git@github.com: Permission denied (publickey).
npm ERR! fatal: Could not read from remote repository.
npm ERR! 
npm ERR! Please make sure you have the correct access rights
npm ERR! and the repository exists.

我不明白这个错误的原因,因为我们引用的存储库是 public,而且我在本地安装依赖项时可以访问相同的存储库。

请注意,运行此代码的存储库是私有存储库,但引用的存储库是 public,但在同一组织下。

您可以在 GitHub 工作流程中尝试强制使用 https URL 的配置,至少用于测试:

- name: Fix URL access
      run: echo -e '[url "https://github.com/"]\n  insteadOf = "ssh://git@github.com/"' >> ~/.gitconfig
    - name: Checkout server
      uses: actions/checkout@v2
      ...

或者(如 in here,只是为了说明您可以将 git config insteadOf 命令放在哪里):

on: push
jobs:
  check-elm:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v2
    - name: Checkout submodules
      shell: bash
      run: |
        # From https://github.com/actions/checkout/issues/116#issuecomment-583221947
        git config --global url."https://github.com/".insteadOf
          ssh://git@github.com/
        git submodule sync --recursive
        git -c "http.extraheader=Authorization: basic ${{secrets.GITHUB_ACCESS_TOKEN}}" -c protocol.version=2 submodule update --init --force --recursive --depth=1
    - uses: actions/setup-node@v1
      with:
        node-version: '8.16.0'
    - run: npm run test

我可以通过在 YAML 文件中签出后添加以下步骤来修复它。此外,在结帐步骤中将 persist-credentials 选项设置为 false。

    steps:
      - name: Checkout
        uses: actions/checkout@v2
        with:
          persist-credentials: false
      - name: Reconfigure git to use HTTP authentication
        run: >
          git config --global url."https://github.com/".insteadOf
          ssh://git@github.com/