小弟本文是通过rpm安装jenkins
一、卸载之前版本的kenkins
# rpm卸载
rpm -e jenkins
# 检查是否卸载成功
rpm -ql jenkins
# 彻底删除残留文件
find / -iname jenkins | xargs -n 1000 rm -rf
基本上靠以上三步能将Jenkins残留文件卸载干净。
二、安装kenkins
1、jenkins下载地址:Redhat Jenkins Packages
选择对应的版本:
注意:不同版本的jenkins版本需要的jdk版本不同,按照所在环境的jdk版本去安装对应的版本
建议采取2.4版本及以上,因为2.4版本以下安装,jenkins中SCM提示不可用,导致其他插件安装不了,需要升级jenkins到高版本才可用。(自己的失败经验获取的结果,前后不知道安装了多少次)
小弟安装的版本 jenkins-2.430-1.1.noarch.rpm, jdk版本为jdk 11
2、通过rpm安装jenkins:
rpm -ivh jenkins-2.297-1.1.noarch.rpm
3、修改JENKINS_PORT服务端口为自定义端口
新版本端口号中是在此文件中:/usr/lib/systemd/system/jenkins.service
vim /usr/lib/systemd/system/jenkins.service
#将如下行中默认的8080修改为自定义的9024端口,修改完成后保存
Environment=“JENKINS_PORT=9024”
如果jdk安装有多版本,比如1.8或者11都有安装,需要更换环境变量中jdk版本为11,或者在此文件中添加一行jdk的路径:
Environment=“JENKINS_JAVA_CMD=/usr/local/java11/bin/java”
重新加载系统配置:
systemctl daemon-reload
4、在启动之前,需要更换官网的源(因为屏蔽导致的访问官网太慢)
find / -name *.UpdateCenter.xml
/root/.jenkins/hudson.model.UpdateCenter.xml
vim /root/.jenkins/hudson.model.UpdateCenter.xml
#将里边site的url地址切换为清华的源地址
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
替换完成之后,但是我们打开这个链接就可以发现,每个插件下载路径依旧没有改变,变的只是这个json是从清华源下来的,其内写死的插件下载地址是没有变的,还是从官网下载,所以无论是更换还是没更换镜像json,下载插件的速度其实是没有变的
所以需要去替换里边的官网地址:
find / -name default.json
/var/lib/jenkins/updates/default.json
cd /var/lib/jenkins/updates
sed -i 's#https://updates.jenkins.io/download#https://mirrors.tuna.tsinghua.edu.cn/jenkins#g' default.json
sed -i 's#http://www.google.com#https://www.baidu.com#g' default.json
重新加载系统配置:
systemctl daemon-reload
此时,完事具备,就可以启动jenkins了
systemctl start jenkins
三、构建流水线
在以上启动后,安装对应的插件完成后以及设置用户名密码后,进入到jenkins web页面中构建流水线(配置git地址、maven地址等全局配置网上大多有,再次不做叙述)
新建任务:python项目为freestyle类型,java项目为maven类型
然后,进入任务配置中:
配置git地址以及触发方式再次不做叙述
主要讲几点不同
java项目需要配置build
其中通过maven打包:
clean compile install package -Dmaven.test.skip=true
然后创建shell脚本
其中:
cd /usr/local/hunter/java ##此为你的自定义的jar包目录
sh stop.sh ##此为停止上一次构建的服务
sh replace.sh ##此为将构建出来的jar包替换上一次构建的jar包
java项目:BUILD_ID=dontKillMe nohup java -Dserver.port=8035 -jar /usr/local/hunter/java/hunter-1.0.0.jar & ##此为执行jar包命令
python项目:BUILD_ID=dontKillMe nohup python3 flask_server.py &
stop.sh脚本文件为:
java:
#stop.sh
#找到正在运行旧项目的 编号
#然后停止
pid=`ps -ef | grep 项目名称 | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
sudo kill -9 $pid
fi
python:
pid=`netstat -anp| grep python服务端口 | awk '{print $7}'|cut -d/ -f1`
if [ -n "$pid" ]
then
sudo kill -9 $pid
fi
replace.sh脚本文件为:
java:
rm -rf 自定义jar包目录/xxx.jar
mv jenkins工作空间/jenkins任务名/xxx.jar 自定义jar包目录
python:
rm -rf 自定义python服务文件目录
mv jenkins工作空间/jenkins任务名 自定义python服务文件目录
注意:
1、执行shell的当前用户为jenkins,并无权限执行kill 命令,如果直接去构建,会提示 permission denied。
所以在kill钱加上sudo ,不过再次构建,又会出现错误: sudo: a terminal is required to read the password; 这通常意味着sudo正在尝试从终端读取密码,但是因为某些原因,它无法访问终端。这可能是因为您的sudo命令被包含在脚本中,或者您正在SSH到远程服务器等情况
此时,需要将jenkins用户赋予权限,在节点管理使用非root的那个账户上添加 NOPASSWD: ALL,如我这在节点管理使用的是jenkins账户
vim /etc/sudoers
## Same thing without a password
# %wheel ALL=(ALL) NOPASSWD: ALL
jenkins ALL=(ALL) NOPASSWD:ALL
2、自定义jar包目录或者自定义python服务目录需要被赋予读写权限,否则执行replace.sh脚本时会提示mv无权限
chmod -R 777 自定义目录
3、在启动服务脚本中,添加:BUILD_ID=dontKillMe
用途:使用Jenkins自动打包部署时候,Jenkins任务停止后,会杀死其启动的衍生进程,导致启动的Tomcat、Nginx或者Uis等在Jenkins任务停止后,被杀死,为了避免这种其概况,需要在执行的shell脚本中加入“BUILD_ID=dontKillMe”,告诉Jenkins不要在任务退出时,杀死自己启动的衍生进程
4、maven自定义本地仓库也需要服务可读写权限
至此,一切准备就绪,就可以构建流水线了。
希望自己遇到的诸多困难,能带给各位一点点小小的帮助,感谢。
参考链接
发表评论