项目中用到了jenkins来做CI/CD,系统是别的同事搭建的,最近刚好不太忙就自己也搭一个玩玩,下面主要来记录配置的过程以及遇到的问题。
文章目录
- 1、插件的安装
- 2、基础配置
- 3、项目自动部署
- 4、配置邮箱系统
- 4.1 自定义格式邮件配置
- 5、遇到的问题
1、插件的安装
jenkins使用各个模块的功能时,需要安装对应的插件,一般需要下载的plugin包括以下几个,使用时根据需要安装就行。
插件下载安装的方式主要有两种:
第一种:在jenkins的插件管理中直接搜索需要的插件,进行安装即可,将升级站点地址改为:http://mirror.esuni.jp/jenkins/updates/update-center.json,(替换成国内的镜像提高下载速度)点击提交,然后在"可选插件"项下选择插件进行安装。
第二种:在官网搜索插件,然后下载,最后通过上传插件的形式来进行插件的安装,如下图:
选择需要的版本进行下载即可。
2、基础配置
安装完成需要的插件以后,对jenkins进行相应的配置,在主页选择"系统管理";
然后选择"全局工具配置",
配置JDK,GIt,Maven,在配置之前要进行JDK,GIt,Maven,关于安装的过程这里不介绍,需要了解的自己在网上查就好,网上有很多博文。
(1) 配置git
"Path to Git executable"中配置git的位置,如果不知道的话输入以下shell命令即可查询:
which git
(2) 配置JDK,找到jdk的位置进行配置即可;
(3)配置maven,填写maven的安装路径
(3)Publish over SSH,配置完ssh以后就可以实现自动部署项目到指定的服务器,选择"系统管理"——》“系统配置”,然后进行如下配置,配置完成以后,点击"Test Configuration"如果返回success则表示配置成功:
这里的 Remote Directory ,就是部署到服务器的目标地址,在项目自动部署中,配置post steps时需要配置的Remote Directory 为这里配置的路径(root/code)的子目录。
3、项目自动部署
点击"新建任务",选择构建一个maven项目,
源码管理
构建触发器,在这里需要将下图中的webhook URL配置到gitlab上
在gitlab上配置webhook,输入连接,然后点击"Add webHook",即可
在这个过程中可能会出现的问题,Requests to the local network are not allowed
解决办法:
首先用管理员登录gitlab,然后执行以下三步:
构建环境,让jenkins配置时打印日志;然后配置build
部署文件到指定的服务器
这里需要注意,在配置Source files时应该用相对位置,不能用绝对位置,如我生成的jar包的位置在/root/.jenkins/workspace/springboot/target/.jar,这里只能配target/.jar
#!/bin/bash
export JAVA_HOME=/root/JDK/jdk1.8.0_211/
echo ${JAVA_HOME}
pp=$(ps aux|grep springboot_test-0.0.1-SNAPSHOT|grep -v grep|awk '{print $2}')
echo "$pp"
if [ -n "$pid"]
then
kill -9 $pp
fi
cd ..
cd code
${JAVA_HOME}/bin/java -jar springboot_test-0.0.1-SNAPSHOT.jar
echo "execute success"
构建配置,构建完成以后发送邮件到指定邮箱,如果有多个用英文逗号隔开
4、配置邮箱系统
进入到主面板,选择"系统管理"——》“系统配置”,首先配置如下内容:
然后进行smtp协议的配置,这里的密码应该使用授权码,而不是邮箱密码:
这样配置完以后就可以正常的进行发邮件的功能了。
这里需要注意,系统管理员的邮箱要与smtp协议配置过程中使用的邮箱一致才行。
完成以上的内容,就可以实现工程的自动打包部署了。
4.1 自定义格式邮件配置
需要首先安装插件Email Extension Plugin,
然后在系统管理中进行如下配置:
上图的默认收件人邮箱可以添加多人,中间用英文半角逗号隔开即可。
5、遇到的问题
(1) ERROR: Exception when publishing, exception message [Exec timed out or was interrupted after XXX ms
解决办法:将系统的超时时间设长一点(系统默认超时时间为120000ms),如下图:
(2)执行shell脚本时,当执行到java -jar ***这一句时,提示java not found。
解决办法: 在shell脚本文件中,加入以下内容:
export JAVA_HOME=/root/JDK/jdk1.8.0_211/ #JDK安装的位置
echo ${JAVA_HOME} #可省略
${JAVA_HOME}/bin/java -jar springboot_test-0.0.1-SNAPSHOT.jar
(3)执行shell脚本,出现Syntax Error “elif” unexpected (expecting then)
解决办法: 在每一次编辑完shell文件以后,最好执行一次以下命令,解决文件存在的编码问题,:
sed -i 's/\r//' filename # eg: sed -i 's/\r//' auto_deploy.sh
(4) 在shell脚本中使用java -jar ** .jar命令来启动程序时,jenkins执行完脚本不退出,一直在执行最后会出现超时提示,构建的结果为UBTABLE
解决办法:在shell脚本中,使用nohup java -jar **.jar&的形式来启动,同时在jenkins的配置中也要使用nohup sh xx.sh的形式来启动脚本,以及勾选Exec in pty,如下图:
参考文章:
gitlab+jenkins使用构建打包执行shell脚本,出现Syntax Error “elif” unexpected (expecting then)SSH: Transferred 0 file(s) 解决