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/
在 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/