Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 编写Jenkins管道共享库以发布到Nexus NPM存储库_Node.js_Jenkins_Jenkins Pipeline_Jenkins Declarative Pipeline - Fatal编程技术网

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

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配置文件 现在我想

我曾经使用DSL管道将我的NPM项目发布到Nexus,其中包含一个发布阶段,步骤如下:

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
选项对我来说并没有任何改变。