Node.js 编写Jenkins管道共享库以发布到Nexus NPM存储库
我曾经使用DSL管道将我的NPM项目发布到Nexus,其中包含一个发布阶段,步骤如下:Node.js 编写Jenkins管道共享库以发布到Nexus NPM存储库,node.js,jenkins,jenkins-pipeline,jenkins-declarative-pipeline,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' } } 我在Jenkins上安装了一个名为“Node LTS”的NodeJS,还有一个带有此配置ID的npmrc配置文件 现在我想
stage ('Publish') {
nodejs(nodeJSInstallationName: 'Node LTS', configId: '123456ab-1234-abcd-1234-f123d45e6789') {
sh 'npm publish'
}
}
我在Jenkins上安装了一个名为“Node LTS”的NodeJS,还有一个带有此配置ID的npmrc配置文件
现在我想将这个阶段导出到groovy SharedLib中。
根据和,我可以这样写:
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`
通过查看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 auth
:在package.json中添加publishConfig.registry
选项对我来说并没有任何改变。