写在前面
因种种原因,目前呆在运维岗,so,自己玩了下Jenkins自动化部署。下面记录在部署jenkins过程中,遇到的问题。
配置环境:
在学习过程中一共有两个环境:
- VMware搭建的本地虚拟机,系统为centos7.4;
- 阿里云购买的服务器,系统环境为centos7.4。
本地虚拟机:
先说本地虚拟机,通过本地虚拟机搭建好环境后,根据网上教程装好Jenkins相关使用环境(此处不做详述,可以自行Google或百度)。在Jenkins安装完成后,打开发现提示:该Jenkins实例似乎已离线。好吧,查阅相关资料发现将改地址改为:http://updates.jenkins.io/update-center.json可以实现联网。最后发现还是不行,折腾了一天时间,通过离线安装汉化插件,装上了发现还是不行,最后无奈放弃。。。等我多学一点再来尝试,相关问题先记录在这里。
阿里云环境:
在放弃本地虚拟机后,用阿里云尝试,安装好jenkins后,打开后发现可以正常初始化,并且初始化后直接就是中文,并且还能够在线安装各种插件。由此可以判断本地虚拟机可能是网络问题(但是使用yum安装各种包又没问题,后续还需要查下问题所在),继续玩线上环境。搭建完成后,用vue做的一个前端项目作为自动化部署的材料。
遇到第一个问题:build项目需要node环境,刚开始使用yum方式安装node,发现版本过低,在build项目的过程中,各种问题。然后老老实实通过官网的二进制包安装最新的node环境,本地编译成功(这个过程中持续半天,有苦难言,就不详述)。默认本地可以build成功,现在换成jenkins来跑自动化流程:
结果发现在使用shell命令的时候,会出现提示权限不足:
mv: cannot move 'XXXX': Permission denied
然后,shell命令内加了sudo,然后就给我报这个错误。。。
我的内心也是崩溃的。反手根据上述提示继续搜索,发现搜到一个解决方案,附博客解决方案:
一、 切换到root用户
终端中执行 su 命令,然后输入密码,从普通用户切换为根用户。
二、为sudoers配置文件添加写权限
sudoers文件位于 /etc 目录下,其为系统配置sudo用户的一个只读配置文件。在root身份下执行 chmod +w /etc/sudoers 命令为该文件添加写权限。
三、编辑sudoers配置文件
执行 vi /etc/sudoers 命令对配置文件进行编辑。在文件中先找到
Allows people in group wheel to run all commands
这段配置,然后在配置下方新起一行添加所需要增加 sudo权限的用户,格式如下:
jenkins ALL=(ALL) ALL
四、退出保存
编辑完配置文件保存退出后,使用 su 普通用户名 切换回普通用户重新执行sudo命令成功解决问题。
作者:拂晓Skyler
来源:CSDN
原文:https://blog.csdn.net/lisongjia123/article/details/78493748
使用后发现可以正常mv文件到相应目录。
跑完Jenkins部署后,发现第二次build会失败,原因是因为以前的包没有删除,加入shell命令:rm,然后报错。。。
rm: cannot remove ‘/usr/share/nginx/html/404.html’: Permission denied
好吧,问题没有完全解决,继续搜索相关解决方案,最后发现。。。
jekins默认使用jenkis用户名去跑shell命令。只需要修改jenkins相关配置就可以上述问题:
解决办法如下:
- 控制台执行命令:
vi /etc/sysconfig/jenkins
- 找到JENKINS_USER:
JENKINS_USER="jenkins"
- 修改为root,调整Jenkins所属组:
chown -R root:root /val/lib/jenkins
chown -R root:root /val/cache/jenkins
chown -R root:root /val/log/jenkins
- 重启服务:
service jenkins restart
重新build,成功。
发送邮件配置
可以成功build后,安装Email Extension Plugin插件,插件配置可以参考其他大大的帖子,有一点需要注意的是,我使用的163的邮箱,需要注意端口号,我一直卡在无法成功发送邮件,很大一部分原因就是端口问题:
首先,我根据帖子说的不要勾选 使用SSL协议
,使用25端口,一直无法发送邮件,初步判定是因为端口问题,因为有贴说可能是运营商禁封了25端口,相关帖子可参考:
禁封25端口
然后去163看了相关问题解答,发现不适用ssl的话使用的是25端口。
163关于邮件接口解答
好吧,尝试勾选ssl协议,将端口切换为994,好吧,WTF,世界未解之谜,其他端口我后面再去尝试吧。先休息一波,继续玩基于docker的自动化部署。后续问题继续记录。
上内容仅为自己的学习过程,过程曲折,我所遇到的问题可能不适合所有场景,但是做个记录,以后说不定可以用到。若对以上内容有不同简介或看法,欢迎一起探讨。
企鹅号:1041415167 邮箱地址:zth1041415167@outlook.com