【问题标题】:In a Github Action how to reference a private package for a test?在 Github Action 中如何引用私有包进行测试?
【发布时间】:2022-02-11 05:31:28
【问题描述】:

我已经为 Github Action 编写了一个测试文件:

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 使用组织私有 repo。当 Github Action 运行失败并出现错误:

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.

我的研究试图解决这个问题:

在我的 Github Action 中,我如何正确引用私有 org 存储库,以便我的测试能够正常工作,或者我缺少一个步骤?

【问题讨论】:

  • 我发现this issue 有一些有趣的建议。例如,在调用使用 package.jsonnpm ci 命令时使用 PAT,因为默认的 GITHUB_TOKEN 无权访问其他存储库,即使在同一组织中也是如此。

标签: node.js unit-testing testing yaml github-actions


【解决方案1】:

answer 是正确的,现在是示例 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 Action 显示为通过:

【讨论】:

  • 我修正了我的答案并添加了“:”,所以你可以缩短你的答案:)
【解决方案2】:

您必须使用 URL + 令牌在 CI 上添加授权 - 这是通过 .npmrc 文件完成的。

  1. 创建令牌:npm token create --read-only

  2. 将其添加到 GitHub 上名为 NPM_TOKEN 的机密

  3. 在运行npm ci 之前,使用您的令牌创建一个本地文件:

    添加一个步骤:- run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc

其他一切都保持原样。

【讨论】:

  • 那行得通,并且还用完整的 yml 文件做出了回答。
猜你喜欢
  • 2020-02-14
  • 2020-01-17
  • 2020-07-12
  • 2020-04-11
  • 1970-01-01
  • 1970-01-01
  • 2018-08-01
  • 2017-07-04
  • 2017-09-11
相关资源
最近更新 更多