Jenkins 实现 Nexus npm Library 版本发布时遇到的问题

Jenkins 实现 Nexus npm Library 版本发布时遇到的问题

问题说明

使用 Nexus 来开发 前端Library 镜像仓库时,在 执行 npm publish 提交前,需要有 npm adduser 操作来,添加对镜像仓库的 user token, 这个 npm adduser 会触发一个交互界面,来输入username password email 等信息,这在手动发布版本时是没有问题的,但是如果要在 Jenkins Job 中实现自动化的发版,那么 npm adduser 触发的交互界面就会对构建有影响,以下是解决方案。

解决思路

  1. Jenkins Job 执行过程中在项目根目录下,创建新的 .npmrc 文件,用于配置当前项目的 npm 配置
  2. 使用 _auth 配置来代替在交互界面中输入username:password

需要创建的 .npmrc 配置

email=${LIBRARY_EMAIL} # Nexus 需要填写,一个普通的邮件地址即可
always-auth=true # 强制npm在访问注册表时始终需要身份验证,即使对于GET请求也是如此
_auth=${libraryAuth} # _auth 是将 username:password 进行base64转码后的结构,也是身份认证的关键

_auth 生成

_auth 是将 username:password 进行base64转码后的结构吗,可通过如下命令生成

echo -n 'username:password' | openssl base64

Jenkins 中的实现

stage("create .npmrc") {
  steps {
    dir("ui-library") {
      script {
        def libraryAuth = sh(returnStdout: true, script: "echo -n 'username:password' | openssl base64").trim()          
        echo "Get _auth = ${libraryAuth}"
        def npmrc = sh(returnStdout: true, script: "echo 'email=xxx@163.com\nalways-auth=true\n_auth=${libraryAuth}\n' > .npmrc")
        echo "${npmrc}"
      }
    }
  }
}

然后在下一个 阶段中执行 npm publish 即可

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值