小弟本文是通过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自定义本地仓库也需要服务可读写权限

至此,一切准备就绪,就可以构建流水线了。

希望自己遇到的诸多困难,能带给各位一点点小小的帮助,感谢。

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: