从Docker gitlab CI在Verdaccio上发布npm模块

时间:2019-02-06 11:17:53

标签: docker npm gitlab gitlab-ci verdaccio

我正在尝试从Docker中运行的Gitlab CI在我的私有Verdaccio存储库中发布模块。我遵循了this tutorial,并在主机上生成了令牌(因为直到管道启动,用于运行作业的容器才存在)。

image: node:11-alpine

stages:
  - test
  - publish

before_script: 
  - npm set registry http://nodejs.repo.asts.com
  - npm i

test:
  stage: test
  script: 
    - npm run lint
    - npm t
  coverage: '/All files\s*\|\s*(\d{1,3}(?:\.\d+)?)/'

publish:
  stage: publish
  script:
    - echo "//nodejs.repo.asts.com/:_authToken=\"$NPM_AUTH_TOKEN\"" > ~/.npmrc
    - cat ~/.npmrc
    - npm whoami
    - npm publish

作业失败,并出现以下错误:

$ npm whoami
npm ERR! code ENEEDAUTH
npm ERR! need auth this command requires you to be logged in.
npm ERR! need auth You need to authorize this machine using `npm adduser`

但是cat命令显示令牌具有预期值。

我不明白问题是否在于Verdaccio不支持令牌或我生成令牌的方式。我还找到了plugin,但我不知道应该如何使用。

我应该如何配置gitlab CI以在Verdaccio上发布软件包?

1 个答案:

答案 0 :(得分:1)

它应该像@Hedge所说的那样工作:将令牌保存在项目文件夹中的.npmrc文件中:

image: node:11-alpine

stages:
  - test
  - publish

before_script: 
  - npm set registry http://nodejs.repo.asts.com
  - npm i

test:
  stage: test
  script: 
    - npm run lint
    - npm t
  coverage: '/All files\s*\|\s*(\d{1,3}(?:\.\d+)?)/'

publish:
  stage: publish
  script:
    - echo "//nodejs.repo.asts.com/:_authToken=\"$NPM_AUTH_TOKEN\"" > .npmrc
    - npm whoami
    - npm publish