编写Jenkins管道共享库以发布到Nexus NPM存储库

时间:2017-12-27 09:07:58

标签: node.js jenkins jenkins-pipeline jenkins-declarative-pipeline

我过去常常使用包含发布阶段的DSL管道将我的NPM项目发布到Nexus:

stage ('Publish') {
  nodejs(nodeJSInstallationName: 'Node LTS', configId: '123456ab-1234-abcd-1234-f123d45e6789') {
    sh 'npm publish'
  }
}

我有一个名为&#34的NodeJS安装; Node LTS"在我的Jenkins和带有此configId的npmrc配置文件中。

现在我想将此阶段导出到一个常规的SharedLib中。 根据{{​​3}}和Declarative Pipeline documentation,我可以这样写:

    stage('Publish') {
        tools {
            nodejs 'Node LTS'
        }
        steps {
            sh 'npm publish'
        }
    }

但是这不会设置当前在我的npmrc配置文件中的身份验证配置:

registry=http://my-nexus/repository/npm-private/
_auth="some=base=64=credential=="
always-auth=true

是否有想法使用声明性语法检索此配置并阻止此错误消息?

npm ERR! code ENEEDAUTH
npm ERR! need auth auth required for publishing
npm ERR! need auth You need to authorize this machine using `npm adduser`

1 个答案:

答案 0 :(得分:3)

看一下npm日志文件和阅读文档,我终于找到最好的解决方案是在package.json文件中指定以下发布配置:

{
  "name": "@my-company/my-project",
  ...
  "publishConfig": {
    "registry": "http://my-nexus/repository/npm-private/"
  },
  ...
}

我离开.npmrc配置:

registry=http://my-nexus/repository/npm-private/
_auth="some=base=64=credential=="
always-auth=true

注意:对于自动化脚本,我需要always-authhttps://docs.npmjs.com/misc/config