在Github Action中如何引用私有包进行测试?
In a Github Action how to reference a private package for a test?
我已经为 Github 操作编写了一个测试文件:
test.yml
name: Test
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x, 16.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm run build --if-present
- run: npm test
但我的 package.json 使用组织私有存储库。 Github 操作运行时失败,我收到错误消息:
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@org/repo/
npm ERR! 404
npm ERR! 404 '@org/repo@1.2.3' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/runner/.npm/_logs/2022-02-10T17_17_46_961Z-debug.log
Error: Process completed with exit code 1.
我试图解决问题的研究:
- Installing npm package fails with 404
在我的 Github 操作中,我如何才能正确引用私人组织存储库,以便我的测试能够正常工作,或者我是否遗漏了一个步骤?
您必须使用 URL + 令牌向 CI 添加授权 - 这是通过 .npmrc
文件完成的。
创建令牌:npm token create --read-only
将其添加到名为 NPM_TOKEN
的 GitHub 上的秘密
在 运行 npm ci
使用您的令牌创建本地文件之前:
添加一个步骤:- run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc
其他一切保持原样。
这个 是正确的,这里是示例 test.yml 文件:
name: Test
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x, 16.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc
- run: npm ci
- run: npm run build --if-present
- run: npm test
Github 操作显示为通过:
我已经为 Github 操作编写了一个测试文件:
test.yml
name: Test
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x, 16.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- run: npm ci
- run: npm run build --if-present
- run: npm test
但我的 package.json 使用组织私有存储库。 Github 操作运行时失败,我收到错误消息:
npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@org/repo/
npm ERR! 404
npm ERR! 404 '@org/repo@1.2.3' is not in the npm registry.
npm ERR! 404 You should bug the author to publish it (or use the name yourself!)
npm ERR! 404
npm ERR! 404 Note that you can also install from a
npm ERR! 404 tarball, folder, http url, or git url.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/runner/.npm/_logs/2022-02-10T17_17_46_961Z-debug.log
Error: Process completed with exit code 1.
我试图解决问题的研究:
- Installing npm package fails with 404
在我的 Github 操作中,我如何才能正确引用私人组织存储库,以便我的测试能够正常工作,或者我是否遗漏了一个步骤?
您必须使用 URL + 令牌向 CI 添加授权 - 这是通过 .npmrc
文件完成的。
创建令牌:
npm token create --read-only
将其添加到名为 NPM_TOKEN
的 GitHub 上的秘密在 运行
npm ci
使用您的令牌创建本地文件之前:添加一个步骤:
- run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc
其他一切保持原样。
这个
name: Test
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
node-version: [14.x, 16.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc
- run: npm ci
- run: npm run build --if-present
- run: npm test
Github 操作显示为通过: