Jenkins+Maven+Github+Tomcat+shell实现自动化集成发布

Jenkins+Maven+Github+Tomcat+shell实现自动化集成发布
在做这个工作得时候我查了很多网上资料,比较杂乱,最终在一名叫ianjinsong作者得文章中获得启发,还是要感谢这位仁兄!
一、环境准备:
Jenkins+Tomcat服务器:106.12.93.190(百度云主机,测试Jenkins使用)
Tomcat服务器:118.24.137.86 (腾讯云主机,测试发布ZrLog项目专用)
Github服务器:https://github.com/longyueyang/test-java.git
Github也可以选择自行搭建的gitlab私服
Jenkins与Tomcat服务器之间实现互信任免密登录(后期要实现远程执行shell脚本),利用如下两条命令:
Ssh-keygen
Ssh-copy-id
Jenkins的公钥:cat /root/.ssh/id_rsa.pub
将公钥添加到github得key信任中(名称随便写):

二、环境部署
一、安装jenkins
1.下载jenkins
? ? ??这里我选择的是war包安装jenkins,下载最新得就行  
Jenkins 2.121.3我得版本
官网:https://jenkins.io/download/

2.安装jdk环境
?jdk-8u73-linux-x64.gz
?本人分享下载地址:https://pan.baidu.com/s/1PndZNkYTkIzQYuWbO90T6g
tar -xvf jdk-8u73-linux-x64.gz -C /usr/local/
vim /etc/profile 追加如下
#JAVA_HOME
export JAVA_HOME=/usr/local/jdk1.8.0_73
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
LANG=zh_CN.utf8
export LANG

3.安装tomcat
? ? ?本人分享地址:https://pan.baidu.com/s/1zONUCed9ORxOtqQxLEFmng  
这个什么版本都可以,别太旧了,旧的会有漏洞,解压完成试试能不能用,tomcat目录里面bin目录下,./catalina.sh start启动,访问一下,不能访问基本都是防火墙问题,能出现tom猫界面就可以停了,可以./catalina.sh stop,也可以找到进程pid,kill-9 pid号,进到webapps目录里面删除所有,把下载好的的jenkins.war拷进来,启动tomcat。

http://118.24.137.86:8080/jenkins/

在服务器上面cat /root/.jenkins/secrets/initialAdminPassword会出现让输入的密码,一串数字字母,多等一会就出现了接下来的界面

这个就是说推荐安装还是自己选,需要的包后面可以装,我点了第一个,知道用什么插件点第二个也可以这样装的包少一点。安装的插件都在/root/.jenkins/plugins/下面。

(PS:此处也很有可能出现jenkins处于离线状态,前提是现实中并未断网,可采取如下办法补救:)


解决方法:
安装插件那个页面,就是提示你offline的那个页面,不要动。然后打开一个新的tab,输入网址http://118.24.137.86:8080/jenkins/pluginManager/advanced。 这里面最底下有个【升级站点】,把其中的链接改成http的就好了,http://updates.jenkins.io/update-center.json。 然后在服务列表中关闭jenkins,再启动,这样就能正常联网了

可以直接选择continue as admin也可以创建用户
?
开始使用,点击就会进来
?
? ? ?admin用户登录还不知道密码是什么,最好新建一个属于自己得用户,鄙人就是新建jenkins用户使用
二、安装Maven(用来构建项目)?
? ? 本人分享地址:https://pan.baidu.com/s/1_kqfLo8Kb_fBPfm7p6SFtA
tar -xvf apache-maven-3.3.9-bin.tar.gz -C /usr/local/
vim ?/etc/profile
? ? ?export M2_HOME=/usr/local/maven3
? ? ?export M2=$M2_HOME/bin
? ? ?export PATH=$M2:$PATH
三、安装git
yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker curl-devel
wget https://www.kernel.org/pub/software/scm/git/git-2.15.0.tar.gz
tar xzf git-2.15.0.tar.gz
cd git-2.15.0
./configure
make
make install
PS:git使用https协议出错:Peer reports incompatible or unsupported protocol version
解决办法:
yum update -y nss curl libcurl(解决git不支持https得问题)

nss为名称解析和认证服务 curl为网络请求库

四、配置jenkins
? ? ?jenkins因为配置原因出错千千万,一步一报错,天天有惊喜,下面配置是把坑都填好的。
?
1.添加插件

选择可选插件,过滤搜索,如果不知道那个有用没用,git、ssh、maven过滤出来得都装上

?
?选择直接安装也可以,重启后安装也可以,用什么功能搜一下安装没,没安装装上就好,我看了已经安装的,比自己选安装的安装的多很多。。。
?很多教程都装Deploy to?Container?Plugin,这个可以把包从运行的tomcat的项目http地址上直接发到项目服务器的目录下,我仔细研究了下觉得还是linux shell脚本简单。
2.工具配置
?

jdk别名叫啥都可以,路径写对,写你jdk环境变量配置的路径,写错了会出现ERROR: Failed to parse POMs java.io.IOException: Cannot run program***错误

git的地址要写的是git这个命令的地址不是目录的地址,yum装的自然是/usr/bin/git,我是编译安装路径选自己得安装位置/usr/local/bin/git
?
?
?写完保存就好,接下来系统配置
3.系统配置

?

?
?这个配置费劲九牛二虎之力,刚开始一直找不到这个选项,后来在插件中安装了maven得几个插件才显示,此处关系到maven得jar包存储,也是相当重要
五、构建项目
?点击新建,出现下图,名字随便起,选择构建一个maven项目

?


?
?
?
连接git,此处在开始已经将jenkins所在服务器得公钥加在了github上面,免密认证,自己搭建得gitlab私服也同理

?

?

?

选择这个这里面可以写脚本,我下面写这个相当于脚本里的命令去远程执行另一个脚本
?
如图,后面的功能都是用脚本写的,jenkins和Tomcat服务器互相做了免密登录,在jenkins上可以直接用/usr/bin/ssh [email protected]的ip "要执行的命令"?
/bin/bash /data/tomcat.sh ?在Tomcat上执行这个脚本
过程:jenkins调用git把Github上的代码下载到jenkins服务器,maven构建成war包,调用ssh运行shell脚本完成备份,停服务,清webapps,拷war包到tomcat下,起服务
至此保存配置,点击立即构建

Tomcat请求项目页面成功展示:

下面是我得脚本示例,写的比较烂~
#!/bin/bash
#引入了系统环境变量,这样系统环境变量里面没有export声明的也可以用
source /etc/profile
sj=date +%m-%d-%H%M
#开始先打印个时间到日志
echo date >> /tmp/ZrLog.log
#备份一下当前的项目,名字用ZrLog代替
tar -zcPf /data/bf/ZrLog_$sj.tar.gz /usr/local/tomcat8/webapps/ZrLog >>/dev/null
echo "tomcat备份成功,开始拷war包" >> /tmp/ZrLog.log
#在/data/bf里面处理完再放到tomcat下,感觉停服务的时间短一些
#rm -rf /data/bf/ZrLog/*

/usr/bin/scp [email protected]:/root/.jenkins/workspace/test01/target/zrlog-1.10.1-SNAPSHOT.war /data/bf/ZrLog/ZrLog.war
echo "开始解压,替换配置文件" >> /tmp/ZrLog.log
unzip /data/bf/ZrLog/ZrLog.war -d /data/bf/ZrLog >>/dev/null
sleep 3
rm -rf /data/bf/ZrLog/ZrLog.war
echo "停止服务"
tomcat_pid=/usr/sbin/lsof -i:8080 | awk -F" " NR==2‘{print $2}‘
kill -9 $tomcat_pid
rm -rf /usr/local/tomcat8/webapps/ZrLog/
/bin/cp -a /data/bf/ZrLog /usr/local/tomcat8/webapps/
echo "启动服务" >> /tmp/ZrLog.log
/usr/local/tomcat8/bin/catalina.sh start &
sleep 10
re_pid=/usr/sbin/lsof -i:8080 | awk -F" " NR==1‘{print $2}‘
if [ $re_pid == "PID" ];then
echo "tomcat自动部署成功"
echo "tomcat重启成功" >> /tmp/ZrLog.log
else
echo "tomcat自动部署失败"
echo "tomcat重启失败" >> /tmp/ZrLog.log

fi

原文地址:http://blog.51cto.com/11612019/2170607

时间: 2024-10-24 22:43:05

Jenkins+Maven+Github+Tomcat+shell实现自动化集成发布的相关文章

Jenkins+maven+svn+tomcat 持续集成环境快捷部署

搭建持续集成环境 jenkins + maven + svn + tomcat 实现自动编译打包部署 1.环境准备 (1)JDK1.8.0_131                    #不低于1.7版本,这里用最新版本 (2)Apache Maven 3.3.9        #可以选择3.2.5或者3.3.9:不要使用3.5.0版本!! (3)SVN客户端(Subversion 1.6.11)         #程序版本控制SVN1.6.11 (4)Tomcat1.7(apache-tomc

利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(一)(网内首发超详细版)

目录结构如下: 目录 1说明及环境介绍3 1.1说明3 1.2环境准备及格式约定4 2 Linux下apache搭建svn服务器4 2.1 apache安装部署4 2.2 svn安装部署5 2.3整合svn和apache6 2.4 ssl方式部署apache7 2.4.1安装apache7 2.4.2安装svn7 2.4.2 部署认证8 3 Linux下svn独立服务器方式部署9 3.1安装SVN9 3.2 配置环境10 3.3 权限配置样例11 3.4 启动SVN服务器12 3.5 访问方式1

利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(三)(网内首发超详细版)

3.3 权限配置样例 注意: * 权限配置文件中出现的用户名必须已在用户配置文件中定义. * 对权限配置文件的修改立即生效,不必重启svn. 用户组格式: [groups] = , 其中,1个用户组可以包含1个或多个用户,用户间以逗号分隔. 版本库目录格式: [<版本库>:/项目/目录] @<用户组名> = <权限> <用户名> = <权限> 其中,方框号内部分可以有多种写法: [/],表示根目录及以下,根目录是svnserve启动时指定的,我们

Jenkins+maven+svn+tomcat操作手册(一)

1.1 概述 在企业开发中最常用的build工具是maven,因此绝大多数项目都是采用maven来进行开发的.在项目开发过程中,经常需要做的事情就是项目的编译.打包和发布等这些重复性的事情.如何做到自动化的处理这些繁琐与无聊的工作,就是本文需要解决的问题. 解决的方案就是使用jenkins这个工具来帮助我们. 1.2 准备条件 前提是电脑上已经具备java开发的环境:jdk+eclipse(或MyEclipse/netbeans等)+tomcat+svn. 我本机的环境: System:win7

利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(四)(网内首发超详细版)

6安装maven 下载地址:http://maven.apache.org/download.cgi 解压安装 unzip –o apache-maven-3.2.1-bin.zip mv apache-maven-3.2.1 maven 配置环境变量 MAVEN_HOME=/usr/local/maven export PATH=$MAVEN_HOME/bin:$PATH 7 java环境自动构建部署 7.1 新建job 输入名称如下图 输入SVN服务器地址 注意:上面已经认证过了,因此没有报

利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(二)(网内首发超详细版)

2.4 ssl方式部署apache 2.4.1安装apache ./configure --prefix=/usr/local/apache2 --enable-dav --enable-ssl--enable-so --enable-mods-shared=all make && make install 2.4.2安装svn 安装apr-1.4.6.tar.gz.apr-util-1.5.1.tar.gz.neon-0.29.6.tar.gz同2.2章节部分 unzip sqlite-

利用apache+svn+jenkins+maven 实现java环境的自动化构建和部署(五)(网内首发超详细版)

8 Subversion FAQ 8.1 官方FAQ网址 http://subversion.apache.org/faq.zh.html 8.2 svn遇到错误总结 8.2.1 svn不显示日志 解决办法:1)找到你SVN版本库下conf文件夹下的svnserve.conf文件2)打开svnserve.conf文件,将其中名为anon-access的一项设置为anon-access=none. 这样的话,日志文件即可显示正常. 8.2.2 版本冲突问题 svn update --usernam

Jenkins+maven+svn+tomcat操作手册(三)

上接:Jenkins+maven+svn+tomcat操作手册(二) 部署完成之后,我们来进行测试 1.5 测试 注意:在构建之前要启动tomcat,因为jenkins需要通过网络访问tomcat,然后把war文件自动部署到tomcat的webapps目录下. 下面开始构建,可以等着自动去build,也可以手工去触发一次,手工触发如下图所示的操作: 构建完成之后,点击Name下边的连接: 然后点击Console Output可以查看控制台输出的日志,查看报错的原因: 通过错误原因,我们可以知道,

jenkins + maven + svn + tomcat 自动部署

jenkins  是做什么用的,如果不知道请自行google 通俗的说  jenkins 可以帮助我们编译发布代码,比如我们提交到SVN后,要发布运行,就可以用过jenkins进行编译运行 环境(这里主要标注下我的环境): 1: SVN服务器 项目检出地址 https://192.168.1.22/svn/trunk/crm   (centos) 2: maven  私服    http://192.168.1.23:8080   (cnetos) 3: tomcat web server  h