Jenkins+Maven+Github+Springboot实现可持续自动部署(非常详细)
目前公司开发的项目已经部署到服务器上,部署项目的测试环境和生产环境,加上每个项目n个服务,于是我就
,
骚就是骚,但是就是太累了,于是花点时间研究了一下Jenkins。

Jenkins的作用和它的logo表现出来的一样,就是为了做工作的时候,能够比较轻松,像个绅士一样游刃有余。哈哈哈……下面开始吧!
一、安装内容
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如下:

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服务脚本结束"
restart.sh脚本
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.配置容器

在学习安装Jenkins之前也是走了很多弯路,不会都是到处百度,最终还是完成了Jenkins+Git+Maven实现了SpringBoot的持续集成部署,如果大家有什么问题,欢迎留言讨论,说不定你出现的问题我也出现过呢?哈哈哈,互相学习!
Jenkins+Maven+Github+Springboot实现可持续自动部署(非常详细)的更多相关文章
- Jenkins + Maven + Ansible + Tomcat 实现JAVA代码自动部署
自动部署过程: jenkins从svn拉取代码,调用maven去打war包,用ansible去解压war包,最后重启tomcat. 前情回顾:在前面的文章我的环境已经有Jenkins+ansible ...
- Jenkins +Maven+Tomcat+SVN +Apache项目持续集成构建
详解Jenkins +Maven+Tomcat+SVN +Apache项目持续集成 一:前言 1. Jenkins jenkins版本大全http://mirrors.jenkins-ci.org/ ...
- jenkins+maven+docker集成java发布(一)自动发布
JAVA项目持续集成发布 标签(空格分隔): java jenkins 微服务中持续集成自动发布是很重要的一个环节,将不同的模块应用自动部署到一台或者N台服务器中如果采用人工部署的方式不太现实 git ...
- Jenkins+Github+Nginx实现前端项目自动部署
前言 最近在搭建一个自己的网站,网站框架搭好了要把项目放到服务器运行,但是每次更新网站内容就要手动部署一次,实在很麻烦,于是就想搭建一套自动化部署的服务.看了一些案例最后选用现在比较主流的Jenkin ...
- jenkins+maven+svn构建项目,及远程部署war包到tomcat上
要使用jenkins构建项目,当然要使用jenkins了,我使用的war版本的jenkins jenkins的官网 http://jenkins-ci.org/ 点击latest下载,但是可能因为天朝 ...
- Jenkins构建本地项目到服务器上自动部署的方法
博主原创,转载请注明. 最近在用Jenkins做项目的自动部署,由于项目需求,现在要在本地构建后再放到Tomcat里.以下是本地构建步骤: 名称填写好,下面的选项是可选的. 源码管理这里选择none. ...
- springboot activiti关闭验证自动部署
# spring-activiti # 自动部署验证设置:true-开启(默认).false-关闭 spring.activiti.check-process-definitions=false # ...
- Jenkins+Maven+Gitlab+Tomcat 自动化构建打包、部署
一.环境需求 本帖针对的是Linux环境,Windows或其他系统也可借鉴.具体只讲述Jenkins配置以及整个流程的实现. 1.JDK(或JRE)及Java环境变量配置,我用的是JDK1.8.0_1 ...
- centos7 在docker swarm中运行Jenkins,利用gitlab的webhook触发自动部署脚本
1.宿主机中创建目录 mkdir -p /jenkins_home 2.编辑compose文件,文件名jenkins.yml version: '3.4' services: jenkins-upgr ...
随机推荐
- war文件—Web项目部署
war文件是什么? Web存档(war)文件包含Web应用程序的所有内容.它减少了传输文件所需要的时间. war文件的优点 节省时间:war文件将所有文件合并为一个单位. 所以在将文件从客户端传输到 ...
- C正数负数的原码补码反码以及内存地址分析
#include<stdio.h> void swap(int a, int b); void main1(){ int i = 10; //正数的原码 00000000 00000000 ...
- STL 萃取(Traits)机制剖析
模板特化 在将萃取机制之前,先要说明模板特化 当有两个模板类,一个是通用泛型模板,一个是特殊类型模板,如果创建一个特殊类型的对象,会优先调用特殊的类型模板类,例如: template <type ...
- mini-batch是什么 以及dataloader的作用
mini-batch是什么 以及dataloader的作用 待办 我们在训练神经网络时,使用的是mini-batch(一次输入多张图片),所以我们在使用一个叫DataLoader的工具为我们将5000 ...
- js判断有无属性及新添属性
1.Object 判断有无新属性 obj.hasOwnProperty(propertyName) //有无指定属性propertyName Object.keys(obj) ...
- 517,sytlus/sass/less的区别
均具有“变量”,“混合”,“嵌套”,“继承”,“颜色混合”五大基本特性 scss和less语法较为严禁,less要求一定要使用大括号“{}”,scss和stylus可以通过缩进表示层次与嵌套关系 sc ...
- 5G手机来了,但这些问题让其短期内难以成为“香饽饽”
在5G手机喊了太长时间后,其终于在近日不断亮相. 此前据中国质量认证中心官网显示,共有8款5G手机获得3C认证--华为4款,一加.中兴.OPPO和vivo各有一款.随着首批5G手机通过3C认证,意味着 ...
- mysql5.7导出数据提示--secure-file-priv选项问题的解决方法
mysql可使用 into outfile 参数把表中数据导出到csv,例如可用以下命令把user表的数据导出到user.csv select * from user into outfile '/t ...
- jsp页面直接读取mysql数据库数据显示
jsp页面直接读取mysql数据库数据显示: <%@page import="java.sql.ResultSet"%> <%@page import=" ...
- C# 程序集(Assembly)
程序集 程序集是代码进行编译是的一个逻辑单元,把相关的代码和类型进行组合,然后生成PE文件.程序集只是逻辑上的划分,一个程序集可以只由一个文件组成,也可由多个文件组成.不管是单文件程序集还是多文件程序 ...