在gitlab管道中安装私有npm包

Ced*_*Ced 5 npm gitlab docker gitlab-ci

如果需要使用npm安装私有存储库,NPM_TOKEN需要设置环境变量.

NPM_TOKEN=00000000-0000-0000-0000-000000000000
Run Code Online (Sandbox Code Playgroud)

我在gitlab管道中的构建阶段需要安装一个私有存储库.因此我把这个NPM_TOKEN秘密变量放在我的gitlab pipeline设置中.

我目前的gitlab-ci配置:

image: x/node

build_job: 
  script:
  - printenv NPM_TOKEN
  - npm i @x/test
Run Code Online (Sandbox Code Playgroud)

docker图像就是我设置的.npmrc文件:

FROM node:latest
COPY .npmrc .  
Run Code Online (Sandbox Code Playgroud)

.npmrc在同一目录中的位置:

//registry.npmjs.org/:_authToken=${NPM_TOKEN}
Run Code Online (Sandbox Code Playgroud)

我通过以下方式尝试了docker图像:

 run -it myimage bash
 export NPM_TOKEN=...
 npm i @x/test
Run Code Online (Sandbox Code Playgroud)

这有效,私有包已安装.

但是在gitlab管道上它找不到包(404).当作业运行时,我可以清楚地看到NPM_TOKEN正在打印的env变量.所以我不知道发生了什么事.

Ced*_*Ced 12

我把gitlab-ci更改为:

image: dasnoo/node

build_job: 
  script:
  - printenv NPM_TOKEN
  - npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}
  - npm i @dasnoo/testpriv
Run Code Online (Sandbox Code Playgroud)

它的工作原理.不是为什么我不得不这样做