jenkins+gogs实现JavaWeb项目自动化部署(二)

上一篇文章主要介绍了jenkins和gogs的安装,这一篇重点介绍如何实现JavaWeb项目的自动化部署。

我们的目标是把war包传到应用服务器上,然后关闭tomcat,再启动tomcat。先看下面我们的打包流程。

这里对B、C两步做下说明,tomcat是装在root用户下的,我们的应用服务器做了限制,只能直接ssh登录到普通用户,然后手动切换到root用户。

在使用自动化部署之前我们是纯手动做这些操作的,使用了自动化部署以后我们只需要点击“立即构建”,工具将自动为我们完成这些步骤。

在正式开始之前,我们先做些准备工作。

一、准备工作

登录到jenkins首页后我们需要安装常用的几个插件。

安装如下几个插件:

  • Maven Release Plug-in
  • Publish Over SSH
  • Gogs
  • Deploy to container

接着系统管理—-》全局工具配置,配置git命令的目录,如果你不知道git命令的目录在哪里,输入linux命令whereis git

二、jenkins+gogs自动化部署

前期所有的工作准备好后,接下来开始正式步入主题。

1、新建任务

点击jenkins首页左边栏的“新建任务”,输入任务的名字后点击“确定”

2、配置代码仓库

输入项目的地址后会出现如上错误,这是因为没有配置公钥。

我们需要把服务器中的公钥添加到gogs中。

登录自己服务器,切换到root账户,输入命令ssh-keygen -t rsa 一路回车,然后cd ~/.ssh cat id_rsa.pub 复制出里面的内容。

接着打开gogs页面,点击右上角的头像—-》用户设置—-》SSH密钥—-》增加密钥,输入任意名字(我是以服务器ip命名),把上面复制的密钥拷贝过来。

把私钥配置到jenkins中。

添加后然后选择我们刚刚添加的私钥,发现不报错了

3、配置Build选项

clean package -Dmaven.test.skip=true

所有的都配置好后我们点击底部的“保存”,回到项目页面,点击左边的“立即构建”

上图是我们正式项目的构建记录。到这一步如果构建没问题,会在/var/lib/jenkins/workspace/test/target 这个目录下看到我们编译后的war包。

到目前为止,我们只是完成了文章开头定的目标中的A步。我们接着往下走,来完成我们未完成的目标。

4、接下来我们就借助强大的 Send build artifacts over SSH 插件来完成我们后续的所有目标

默认如果没有配置过ssh,这里的Name是空的,如果不知道Name后面选什么,可以点击最右边的问号寻求帮助。

这里我们的重点就是配置ssh免密登录。可能有人会问免密登录是什么意思,不好意思,请百度之~。

我们的目标是要实现将war包传到应用服务器上并重新启动tomcat。所以这里我们要配置怎么样才能免密登录到应用服务器上。记得先保存下刚刚的配置。

进入系统设置页面后滚动到页面底部,我们会看到如下配置

需要把宿主机(jenkins所在的服务器)上的私钥(上面配置git的时候有说到)拷贝到key那里。

如果点击Test Configuration出现了Success,那说明能成功免密登录到应用服务器的jenkins账户下。接着再回到项目的配置页面,回到我们这一步的开头那里,选择配置好的ssh server。

Source files:这个是相对目录,相对于/var/lib/jenkins/workspace/test/ 这个目录,可以看我上面的配置

Remote directory:这是上传到jenkins账户后的目录,如/home/jenkins/csm

Remove prefix:这个意思是移除前缀目录,要不然拷贝到应用服务上会在Remote directory目录后面追加

重点就是Exec command,用脚本实现我们的CDEF这几步。

sudo su <<EOF
sleep 5s

#sh /usr/local/tomcat/apache-tomcat-8.5.20/bin/shutdown.sh > /dev/null 2>&1 &
#sleep 3s

ps -ef|grep apache-tomcat-8.5.20|grep -v grep|awk '{print $2}'|xargs kill -9
sleep 5s

rm -rf /usr/local/tomcat/apache-tomcat-8.5.20/myapp/ROOT
rm -rf /usr/local/tomcat/apache-tomcat-8.5.20/myapp/runplat/App.war

cp /home/jenkins/csm/App.war /usr/local/tomcat/apache-tomcat-8.5.20/myapp/runplat

BUILD_ID=DONTKILLME

echo "start tomcat...."
nohup sh /usr/local/tomcat/apache-tomcat-8.5.20/bin/startup.sh &
echo "start tomcat successful"
EOF

到这里基本上是大功告成了,这里容易出错的地方是ssh的配置,出现问题多百度和谷歌看看。

另外脚本那块也容易出错,大家如果有好的脚本不妨也写出来资源共享下。

保存退出后,再回到首页,点击右边的构建按钮,如果出现太阳了说明99%是成功了,如果出现错误可以根据控制台输出的信息查看错误原因,相信自己肯定能解决的。

想要深入了解jenkins加入jenkins讨论群是必须的,QQ搜索jenkins会有很多推荐的群,大家选择加入。

文章中如果有错误的地方也欢迎大家指正。

版权声明:本文为博主原创文章,未经博主允许不得转载。http://www.longdw.com/jenkinsgogsjavaweb/