简体   繁体   English

在 Github Actions 上从 package.json 安装私有 github 包

[英]Install private github package from package.json on Github Actions

I'm trying to implement Github actions as a CI on my project.我正在尝试在我的项目中将 Github 操作作为 CI 实施。 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.问题是我在 package.json 上使用私有 git URL,但是 CI 出现错误,因为 Github 操作“以某种方式”无法访问该存储库,这是不可能的,因为它位于同一个用户帐户上。

Does anyone have any idea how to figure this out?有谁知道如何解决这个问题?

main.workflow file: main.workflow文件:

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

You can put an authToken, which has read rights to the registry into a .npmrc in repository where you run npm install .您可以将具有注册表读取权限的 authToken 放入运行npm install存储库中的.npmrc中。

Example:例子:

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

Now there is a dedicated action to automatically setup nodejs it's called actions/setup-node现在有一个专门的动作来自动设置 nodejs,它被称为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:它创建了一个本地 .npmrc 文件,该文件使用环境变量来获取身份验证令牌:

//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您可以使用 if 来定位任何私有注册表,例如 GitHub 包

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM