Jenkins没有yarn && npm的执行权限?为此我和Linux缠斗了数个夜晚

写在前面

    很久以前买了台云服务器,因为一直有事没去折腾,最近有时间了把自己做的东西部署了上去。为了后续维护方便,打算装个jenkins在服务器,这一装不要紧,直接把我几个晚上的空闲时间给献祭了,写这篇文章也是为了避免大家踩我的坑。
    我部署的是一个web应用,我是干前端的,自然用到了node,要在linux安装node,问题就出在这,我会在下方详细展开

正文

    首先简单过一遍在Linux安装Jenkins的步骤吧,我刚开始也是和大家一样网上到处找攻略,后面发现其实去官网是最好的

https://www.jenkins.io/download/

    进入这个页面,就可以看到官方其实已经把很多安装方法都写好了
在这里插入图片描述
    两边都可以,找到自己需要的,直接点进去就行了,像我是Ubuntu系统,我肯定选Ubuntu的教程
在这里插入图片描述
    可恶,居然这么详细,之前找教程帖子的我宛若一个小丑🤡(别忘了装Jenkins之前本地要有Java环境)
    需要提一下的是,照官方的步骤来可能装不上,原因基本上都是超时,可以反复装几次试试,实在不行可以用docker挂镜像用docker装,这个基本是没问题的

    多的就不提了,接下来进入正题,我们前端部署代码到Jenkins上,肯定要在Linux装node,而现在装node基本都会用nvm去管理,就是先得装nvm,一般都会直接克隆nvm的代码到本地,但是直接克隆的话会克隆到当前用户的.nvm文件夹下面,后面配权限的时候会比较麻烦,这里建议在克隆的时候后面跟一个公用的文件夹
    克隆完之后我们进入nvm的文件夹
在这里插入图片描述
    然后依次执行两个文件

. install.sh
. nvm.sh

    第一个是安装,第二个是配置nvm的命令
    好了,问题就出在这,即便更改了nvm克隆的文件夹,nvm的环境变量依旧是设置的当前用户下的.nvm文件夹,我们可以执行命令查看

echo $NVM_DIR
-> /root/.nvm     (我当前是root角色)

    会有什么问题?我们打开install.sh看一眼就知道了

vim install.sh

在这里插入图片描述

    也就是说,我们执行install后,nvm会被安装在当前用户下的.nvm文件夹中,而我们上面提到了,为了方便,我们把nvm克隆到了公用的文件夹内,所以这就乱了套了。这还不要紧,即便我们之后给nvm被安装的那个文件夹授予777权限,jenkins依旧无法执行对应的权限,比如yarn,或者npm。也可能是因为我用的是root角色,但是我估计大部分人登自己的私人服务器一般也会直接用root

解决办法

    改一下NVM_DIR就行了

export NVM_DIR="你要配置的文件位置,推荐与我们克隆的位置保持一致"

执行完后再去执行install.sh,如果哪里配置错了,可以直接删除nvm的文件夹重新安装就行了,不需要执行apt remove
    还没结束,这样只是理清了文件关系,我们还没有配置权限,jenkins依旧无法执行yarn && npm,接下来需要去配置权限,我们使用nvm安装指定的node版本,然后nvm文件夹下会多一个文件夹
在这里插入图片描述

    进入version/node就能看到我们安装的版本了,可以直接给整个目录设置权限,也可以进去给bin执行命令配置权限,这个自己决定,添加一个用户组,把jenkins用户(jenkins安装成功后就会有这个角色)添加进去

groupadd 组名 -g 组ID
gpasswd -a 角色名 组名

    然后,设置文件夹所有者

chown -R jenkins:组名 node文件夹

    添加权限

chmod -R 700 node文件夹

    完成,这样jenkins就可以执行yarn或者npm的命令了


    提一嘴,我们前端一般打包完可能会将打包后的文件移到指定的文件夹内,让代码在web上生效,所以,我们通常会在jenkins的shell里加几行命令

cp -r dist/* /usr/share/nginx/html/
rm -rf dist

    第一个是拷贝命令,第二个是删除命令。我们执行第一条命令的时候很可能也会报错没有权限,这时候有两种情况
        1. 没有执行cp命令的权限
        2. 没有在nginx目录的权限,无法在nginx创建或者更改文件
    如果是第一种情况,就需要给jenkins配置cp命令的权限,印象里cp命令好像在/usr/bin下面,可以自己找一下。如果是第二个,其实完全可以按照我们上面的配置权限的流程来做(注意别让nginx自己没了权限就行)


    其实说到底,遇到这个坑还是因为对Linux不够熟悉,Linux是程序员的基本功,我还需要多多学习啊

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值