一、安装内容
Jenkins(本文主要安装)、Maven、Git、JDK(这个三个安装过程略)
Jenkins与Github配合实现持续集成需要注意以下几点:
①Jenkins要部署到外网,因为内网Github是无法访问到的(走过的坑!),这里我租用的是阿里云的服务器实现。
②Jenkins所在的主机需要安装Git,通过Git程序从Github上clone代码
③在Jenkins中需要指定Git、Maven、JDK,路子都是相同的。
④在Github上使用每一个repository的webhook方式远程触发jenkins构建
⑤在Jenkins内关闭“防止跨站点请求伪造”
回到顶部
二、实现过程
1.不使用Jenkins:
①我们开发人员需要编写代码,提交到版本控制服务器(Svn、Git)
②我们开发人员需要手动拉取最新代码,构建maven工程,进行打包(war或jar)
③我们开发人员手动部署war或jar至应用服务器
④一旦项目上线,bug修改等小改动问题都要重复以上过程
2.使用Jenkins:
①同样,业务代码还是需要开发人员来编写并commit或push至版本控制自服务器(SVN、Git)
②通过以上图,我们发现,Jenkins帮我们做了:拉取最新代码、打包、部署
③我们开发人员只需专注于:业务代码的编写
④一旦项目上线,bug修改等小改动问题,我们开发人员只需提交最新代码即可,另一边的测试或最终用户就能看到最终效果,大大减少我们开发人员的工作量
回到顶部
三、Github仓库准备
鄙人写了一个小demo,用IDEA+Maven构建的SpringBoot的web项目:https://github.com/Simple-Coder/jenkins-demo
回到顶部
四、Jenkins的下载安装
下载地址:https://jenkins.io/download/(下载速度极慢),这里我已经将最新版的war包上传至CSDN下载,亲测可用,下载地址如下:
https://download.csdn.net/download/qq_39947137/11829473
1.Jenkins的war包下载
由于我是Java开发人员,最喜欢一键部署了,下载Jenkins的war直接丢进tomcat的webapps目录即可完成部署。
然后找到documentation,get started,这是学习一门新技术的一些套路了:官网---->download---->documentation---->getting started
2.将war包丢进服务器的tomcat/webapps目录,浏览器访问:IP:端口/jenkins
注:第一次安装,这里坑了我好久!!!(vim /root/.jenkins/hudson.model.UpdateCenter.xml)
打开 hudson.model.UpdateCenter.xml
把http://updates.jenkins-ci.org/update-center.json
改成 :(以下其中一个)
http://mirror.xmission.com/jenkins/updates/update-center.json
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
http://mirror.esuni.jp/jenkins/updates/update-center.json
,还是不行的话找到 updates 目录下的 default.json 把里面所有的谷歌地址改成百度的,即将 http://www.google.com/ 替换为 http://www.baidu.com/。输入密码后出现以下界面说明成功。
配置完成出现以下界面说明url配置完成!
3.推荐插件安装
4.创建用户
5.实例配置
6.开始使用
7.进入首页
至此、Jenkins的下载安装,完成,下面对Jenkins进行一系列的配置。
回到顶部
五、Jenkins的配置
1.插件配置
①Maven Integration:新建job时有maven项目可以选择;
②Deploy to container:将war包部署到tomcat所在的服务器上;
③Publish Over SSH:通过ssh推送文件,并可以执行shell命令;
2.Maven、Git、JDK配置
点击:“系统管理”------>“全局工具配置”
回到顶部
六、新建Jenkins任务
1.点击“系统管理”---->“系统设置”,进行ssh配置
2.首页点击:“新建任务”
3.General配置
4.源码管理
5.构建触发器
6.Github配置WebHook,完成钩子程序的配置
7.构建环境
启动脚本restart.sh如下:
restart.sh脚本
echo "stop服务开始"
pidlist=`ps -ef|grep jenkins-demo.jar | grep -v "grep"|awk '{print $2}'`
#ps -u $USER|grep "Java"|grep -v "grep"
if [ "$pidlist" = "" ]; then
echo "no jenkins-demo pid alive"
else
echo "jenkins-demo Id list :$pidlist"
for pid in ${pidlist}
{
kill -9 $pid
echo "KILL $pid:"
echo "service stop success"
}
fi
echo "stop服务脚本结束"
echo "start服务脚本开始"
JAVA_HOME=/usr/java/jdk1.8.0_181
dir=/opt/jenkins_jars
cd $dir
echo dir=$dir
jar=$(find /lib -type f -name *.jar)
classpath=$dir/*:$dir/lib/*:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
echo classpath=$classpath
echo ---------------------------------------------
nohup $JAVA_HOME/bin/java -classpath $classpath -XX:-UseGCOverheadLimit -Xms1024m -Xmx2048m -jar $dir/jenkins-demo.jar > $dir/log/$(date +'%Y%m%d').log &
echo "start服务脚本结束"
8.构建
至此,第一个任务的配置完毕,接下来就是测试了!
回到顶部
七、测试任务
1.立即构建
2.控制台查看输出
控制台的输出如下:
3.浏览器访问:http://47.92.236.212:8091/test
4.IDEA修改该JSP页面,并推送至git仓库
5.推送github后,触发钩子程序,jenkins自动构建任务
6.浏览器再次访问:http://47.92.236.212:8091/test
八、总结
这里需要注意一下,如果只是单单部署war项目就比较简单了,配置如下:
1.deploy to container
2.配置容器