Home > Back-end >  In a Github Action how to reference a private package for a test?
In a Github Action how to reference a private package for a test?

Time:02-11

I have written a test file for a 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

but my package.json uses an organization private repo. When the Github Action runs it fails and I get the error:

npm ERR! code E404
npm ERR! 404 Not Found - GET https://registry.npmjs.org/@org/repo/
npm ERR! 404 
npm ERR! 404  '@org/[email protected]' 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.

My research trying to solve the issue:

  • jobs

    CodePudding user response:

    You have to add authorization to on CI with URL token - it's done through .npmrc file.

    1. Create a token: npm token create --read-only

    2. Add it to your secrets on GitHub named NPM_TOKEN

    3. Before running npm ci create a local file with your token:

      Add a step: - run: echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" >> .npmrc

    Everything else stays as it is.

  • Related