对Jenkins的了解不是很多,之前公司有用Jenkins自动更新测试环境,每天会在中午和下午下班之前进行自动部署。对于Jenkins的认识局限于此,里面的配置挺多的,这次就用了基本的配置,有更多的内容大家一起探讨。话不多说,那么这次让我们近距离来感受下Jenkins吧!
1、Jenkins的安装
关于Jenkins的安装有很多种方式有war包方式,docker方式以及本次我使用的yum方式。根据需要进行安装部署,以下是yum安装的命令,需要注意由于Jenkins是基于Java开发的,所以在安装Jenkins之前要安装jdk1.8,如果已经安装了jdk1.8请将以下yum安装jdk的部分删除:
yum install -y java-1.8.0-openjdk && \
wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat/jenkins.repo
&& \ rpm --import https://pkg.jenkins.io/redhat/jenkins.io.key &&\
yum clean all && yum makecache && \
yum install -y jenkins && \
systemctl start Jenkins
Jenkins的默认端口是8080(可以对端口进行修改,这里就不介绍了),浏览器输入http://ip:8080对Jenkins进行访问,首次登录Jenkins会提示默认密码的位置,查看存放密码的文件将密码输入进入系统,接下来系统会引导创建管理用户以及插件的下载(插件可以选左侧的插件),插件安装完毕之后就可以用新的admin账户进行登录,进行管理。
2、Jenkins的配置
打开系统管理-全局工具配置,首先配置jdk以及git,maven(如果代码仓库是svn就配置svn,如果有用到其他的也可以进行配置)的路径:
![](https://img.haomeiwen.com/i12423307/05421f0a98efb15c.png)
然后打开系统管理-插件管理,进行SSH插件的安装,安装完成之后选择重新启动Jenkins:
![](https://img.haomeiwen.com/i12423307/4ab33e0ab9f1abc3.png)
打开凭据-系统-全局凭据
![](https://img.haomeiwen.com/i12423307/24e258a3e4661a74.png)
添加凭据
![](https://img.haomeiwen.com/i12423307/04f270ea4e67e98f.png)
输入以后要执行shell脚本主机的用户名以及密码,保存
![](https://img.haomeiwen.com/i12423307/01a14d71f340a542.png)
然后打开系统管理-系统设置进行ssh主机访问的配置,如下,其中credentials这个选择刚刚配置的凭据,点击测试连接,成功就OK了。
![](https://img.haomeiwen.com/i12423307/026410c17e260d20.png)
3、新建任务
打开新建任务,输入任务名称以及选择如下的选项,点击确认:
![](https://img.haomeiwen.com/i12423307/9cc8b19a3aca283b.png)
回到首页,就到看到刚刚新建的任务:
![](https://img.haomeiwen.com/i12423307/0ca48b12ca09777a.png)
点击任务,进入新建的任务:
![](https://img.haomeiwen.com/i12423307/1b2403ebe0430bb4.png)
可以一次点击下左侧的内容,感受下这些大体都是些做什么的,接下来我们点击配置:
首先配置git路径:
![](https://img.haomeiwen.com/i12423307/d05c224836cd6660.png)
源码管理下的git路径:
![](https://img.haomeiwen.com/i12423307/818982dbb260522e.png)
然后配置触发器,下图是每天中午12点进行一次构建,在本文的结尾我会对表达式有一点介绍:
![](https://img.haomeiwen.com/i12423307/716618bd18d56d73.png)
然后在构建的地方,进行构建,注意下图一定不要选错,这里如果不进行登录的会进入linux的非交互模式,应该是这样,这里是个坑
![](https://img.haomeiwen.com/i12423307/ef1fb615c56754ca.png)
接下来选择要执行shell脚本的主机(之前我们配置的主机),然后输入shell脚本,分享下我的shell脚本,这里我首先是执行的主机上存放的一个shell脚本,方便以后脚本的管理:
![](https://img.haomeiwen.com/i12423307/a16990fb486f8459.png)
这个脚本的内容是,大体的意思是停了springboot启动的应用,然后在已经重新从git上下载好的源代码进行mvn的打包以及最后重新启动应用:
#######################################停止sprintboot应用 start
############################################
JAR_NAME=filestorage-0.0.1-SNAPSHOT.jar
tradePortalPID=0
getTradeProtalPID(){
javaps=`$JAVA_HOME/bin/jps -l | grep $JAR_NAME`
if [ -n "$javaps" ]; then
tradePortalPID=`echo $javaps | awk '{print $1}'`
else
tradePortalPID=0
fi
}
shutdown(){
getTradeProtalPID
echo "================================================================================================================"
if [ $tradePortalPID -ne 0 ]; then
echo -n "Stopping $JAR_NAME(PID=$tradePortalPID)..."
kill -9 $tradePortalPID
if [ $? -eq 0 ]; then
echo "[Success]"
echo "================================================================================================================"
else
echo "[Failed]"
echo "================================================================================================================"
fi
getTradeProtalPID
if [ $tradePortalPID -ne 0 ]; then
shutdown
fi
else
echo "$JAR_NAME is not running"
echo "================================================================================================================"
fi
}
shutdown
#######################################停止sprintboot应用 end ############################################
####################################### mvn 重新进行打包 start###############################################
cd /var/lib/jenkins/workspace/futrue
mvn clean install -Dmaven.test.skip=true
cd ./target
####################################### mvn 重新进行打包 end#################################################
####################################### 启动应用 start##################################################
java -jar filestorage-0.0.1-SNAPSHOT.jar > filestorage.out &
####################################### 启动应用 end####################################################
4、手动触发任务
![](https://img.haomeiwen.com/i12423307/060d50a513b4fd16.png)
手动触发一次任务,然后查看执行完成后的日志:
![](https://img.haomeiwen.com/i12423307/d5220a5b0d4f2f68.png)
可以看到日志中的内容首先是从git上clone代码,然后是执行shell脚本的内容,这里我没有配置构建后的操作,可以选择一个邮件通知的内容,每次构建完成之后给指定的邮箱发邮件。
5、观察定时任务
前面配置定时器还没忘记吧,观察下到点自动触发了么。
附录:
关于定时器表达式的内容:
定时构造语法:* * * * *
第一个表示分钟,取值0~59
第二个表示小时,取值0~23
第三个表示一个月的第几天,取值1~31
第四个表示第几月,取值1~12
第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日
以下是几个例子:
每隔5分钟构建一次:H/5 * * * *
每两小时构建一次:H H/2 * * *
每天中午下班前定时构建一次:0 12 * * *
每天下午下班前定时构建一次:30 5 * * *
jenkins启动命令: service jebkins start
网友评论