在 CircleCI 中安装 GitHub 包

TLL*_*ich 6 github circleci circleci-2.0 github-package-registry

对于我的项目,我正在尝试从 GitHub Packages 安装(而不是发布!)一个 npm 包。它托管在组织中的私有存储库上。我已经制作了一个个人访问令牌,具有从该 repo 和 org 读取所需的权限。所有这些都可以通过以下步骤在本地工作

  • .npmrc文件中设置注册表:registry=https://npm.pkg.github.com/OWNER
  • 终端登录:npm login --registry=https://npm.pkg.github.com 然后会提示:
> Username: USERNAME
> Password: TOKEN
> Email: PUBLIC-EMAIL-ADDRESS
Run Code Online (Sandbox Code Playgroud)
  • Username 是你的标准 github 用户名
  • Token 是使用正确权限创建的个人访问令牌
  • Email 可以是随机的

填写完成后,一切正常,我可以安装该包,以及托管在普通 npm 注册表中的所有其他包。现在问题来了:我试图在 circleCI 上复制相同的内容,但它似乎并没有让我覆盖 npm 注册表。该项目在.npmrc其所在的同一文件夹中包含一个文件package.json。这是圆 ci conf 的一部分:

      - run:
          name: "Set NPM registry"
          command: npm config set registry https://npm.pkg.github.com/OWNER
      - run:
          name: "Authenticate with GitHub package registry"
          command: echo "//npm.pkg.github.com/:_authToken=${GITHUB_PACKAGES}" > web_ui/frontend/.npmrc
      - run:
          name: "Install frontend dependencies"
          command: npm run deps-frontend
Run Code Online (Sandbox Code Playgroud)

GITHUB_PACKAGES 只是一个存储在 circleCI 中的环境变量。

现在错误消息告诉我以下内容:

npm ERR! code E401
npm ERR! Unable to authenticate, need: Basic realm="GitHub Package Registry"
Run Code Online (Sandbox Code Playgroud)

我试着用谷歌搜索它,但没有任何有用的东西出现。

Tit*_*lum 4

你能尝试移动run步骤中的步骤pre吗?就像这样:

pre:
  - npm config set registry https://npm.pkg.github.com/OWNER
  - echo "//npm.pkg.github.com/:_authToken=${GITHUB_PACKAGES}" > web_ui/frontend/.npmrc
  - npm run deps-frontend
Run Code Online (Sandbox Code Playgroud)

另一件可以尝试的事情是使用不同版本的npm.

  • 哪种解决方案有效?“npm”版本更改还是“pre”步骤? (2认同)