Install private github package from package.json on Github Actions

旧时模样 提交于 2021-01-24 05:42:05

问题


I'm trying to implement Github actions as a CI on my project. The problem is that I'm using private git URL on my package.json but CI gets an error because Github actions "somehow" doesn't have access to that repo which it's impossible because it's on the same user account.

Does anyone have any idea how to figure this out?

main.workflow file:

workflow "Github Actions" {
  on = "pull_request"
  resolves = ["Danger JS"]
}

action "Build" { <-------- This gets error
  uses = "actions/npm@master"
  args = "install"
}

action "Linter" {
  uses = "actions/npm@master"
  needs = "Build"
  runs = "lint"
}

action "Test" {
  needs = "Linter"
  uses = "actions/npm@master"
  args = "test"
}

action "Danger JS" {
  uses = "danger/danger-js@master"
  needs = ["Test"]
  secrets = ["DANGERJS_TOKEN"]
}

Error log:

Successfully built xxxxxxxxxxxxx
Successfully tagged gcr.io/xxxxxxxxxxxxx
Pulling image: gcr.io/github-actions-development/action-runner:latest
latest: Pulling from github-actions-development/action-runner
xxxxxxxxxxxxx: Pulling fs layer
xxxxxxxxxxxxx: Verifying Checksum
xxxxxxxxxxxxx: Download complete
xxxxxxxxxxxxx: Pull complete
Digest: sha256:xxxxxxxxxxxxx
Status: Downloaded newer image for gcr.io/github-actions-development/action-runner:latest
npm ERR! code ENOGIT
npm ERR! Error while executing:
This package is on same user account but github actions doesn't have access anyhow ------> npm ERR! undefined ls-remote -h -t ssh://git@github.com/test-user/react-test-package.git 
npm ERR! 
npm ERR! undefined
npm ERR! No git binary found in $PATH
npm ERR! 
npm ERR! Failed using git.
npm ERR! Please check if you have git installed and in your PATH.

npm ERR! A complete log of this run can be found in:
npm ERR!     /github/home/.npm/_logs/2018-12-04T13_03_05_291Z-debug.log

### FAILED Build

回答1:


You can put an authToken, which has read rights to the registry into a .npmrc in repository where you run npm install.

Example:

//npm.pkg.github.com/:_authToken=**************
@youraccount:registry=https://npm.pkg.github.com



回答2:


Now there is a dedicated action to automatically setup nodejs it's called actions/setup-node

Here an example:

steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
  with:
    node-version: '10.x'
    registry-url: 'https://registry.npmjs.org'
- run: npm install
  env:
    NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}

It creates a local .npmrc file that is using the environment variable to get the authentication token:

//registry.npmjs.org/:_authToken=${NODE_AUTH_TOKEN}
@youraccount:registry=https://registry.npmjs.org

You can use if to target any private registry, like GitHub packages for instance



来源:https://stackoverflow.com/questions/53614077/install-private-github-package-from-package-json-on-github-actions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!