13

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

 3 years ago
source link: https://www.longdw.com/2019/04/02/jenkinsgogsjavaweb/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

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

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

mubiao-1024x559.png

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

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

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

一、准备工作

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

chajian-1024x909.jpg

安装如下几个插件:

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

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

git-1024x292.png

二、jenkins+gogs自动化部署

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

1、新建任务

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

jenkins1-1024x862.png

2、配置代码仓库

jenkins2-1024x529.png

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

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

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

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

把私钥配置到jenkins中。

jenkins3.png
jenkins4-1024x561.png

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

jenkins5-1024x444.png

3、配置Build选项

jenkins6-1024x213.png

clean package -Dmaven.test.skip=true

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

jenkins7-1024x819.png

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

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

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

ssh.png
ssh1-1024x633.png

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

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

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

jenkins2-1-1024x499.png

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

jenkins3-1-1024x320.png

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

jenkins4-1-1024x250.png

如果点击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/

分类CI


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK