流水线(Jenkins)打包拉取依赖的时候提示无法拉取,需要登录私仓的解决办法
在日常工作中,遇到了Jenkins拉取部门内部组件库失败的情况,原因是组件库后面放到了阿里云私仓,并且是没有公开的,所以就会有如下提示的,一开始我实在.npmrc文件写死阿里云提供的接入token,后面发现可能是因为token过期,导致拉取失败,如下图:
因为这种token会时不时过期,就应该考虑每次打包的时候去登录一次,保证每次打包的时候拉取依赖是成功的。这个时候npm上面有一个专门用来这种无界面的登录,叫做npm-login-cmd - npm ,这个可以实现Jenkins脚本里面配置好一些变量,然后再Jenkins的打包配置里面,加上变量配置,npm-login-cmd会自动读取并且登录到阿里云私仓
export NPM_USER=john
export NPM_PASS=secret
export NPM_EMAIL=john@example.com
npx npm-login-cmd
在项目中,我在.npmrc文件中,配置了项目全局拉取依赖的地址,所以这里npm-login-cmd在登录的时候会登录到这个地址
然后再Jenkins的打包代码中插入npm-login-cmd的用法代码,可以看到我的打包代码里面,多了一行安装命令
npm install -g npm-login-cmd --registry=https://registry.npmmirror.com/
这个是因为当时直接pnpm add npm-login-cmd,很奇怪提示说找不到npm-login-cmd,由于当时时间紧任务急,就直接把安装的镜像地址直接改回淘宝官方的,这样子就可以直接下载安装了。
如上图,在Jenkins里面配置好全局变量,在脚本里面就可以直接使用,免得多个项目都得同时修改。如果大家遇到类似情况,就可以使用这种办法来登录私仓拉取一些自定义的组件库或者方法库。
最后,除了npm-login-cmd,还有一些其他的依赖可以用,比如npm-login-cli,使用方法也很简单。