Jenkins安装部署以及自动构建和发布jar应用

前言

Jenkins作为Hudson的一种继承升级版,对自动化测试部署的领域里一马当先。本文将陪你走完自动化测试部署的全流程,主要包括以下几部分:

  1. Jenkins安装(ver.2.179)
  2. Jenkins搭建
  3. 配置SVN触发器以自动构建
  4. 每次自动构建后自动部署jar包应用

 一、安装

关于Jenkins的安装,网上教程很多,再写也是重复没有意义,下面给出两个本人实践过程中参考的文章:

 二、搭建

关于Jenkins的搭建,同上,给出两个本人实践过程中参考的文章:

 三、SVN触发器以自动构建

到了这一步,我们又拥有了代码版本库管理系统(如SVN),但是和Jenkins的协同好像还不够顺畅,每次我们给SVN提交代码后,都要手动去Jenkins上找到对应工程,点击立即构建。这样的工作太繁复枯燥,在此可以借助SVN的钩子hooks,作为Jenkins的触发器,使SVN可以自动触发Jenkins的构建操作,以此完成Jenkins对SVN的自动构建。

3.1 先下载jenkins并放到SVN服务器指定目录

【Manage Jenkins】-【Jenkins CLI】,然后找到jenkins-cli.jar链接地址并复制,最后在SVN服务器指定目录下下载jenkins-cli.jar,如下:

[root@bi-zhaopeng02 songzehao]# pwd
/root/songzehao
[root@bi-zhaopeng02 songzehao]# wget http://10.1.4.17:8080/jnlpJars/jenkins-cli.jar

3.2 在hooks目录下新建文件post-commit

进入某个工程的SVN钩子目录hooks,如下:

新建post-commit文件,并赋予可执行权限,内容如下:

#!/bin/bash
source /etc/profile
java -jar /root/songzehao/jenkins-cli.jar -s http://10.1.4.17:8080/ build dataservice

其中jar包路径为上一步下载的位置;build后的参数为SVN中某工程的代码仓库名;url为Jenkins服务地址,若地址未书写正确,在SVN客户端提交代码后,可能出现错误码255Http错误403,如下图:

所以需检查好Jenkins的地址。另外,post-commit脚本命令中未添加-auth username:password参数,是由于本人设置了Jenkins的授权策略为Anyone can do anything。设置步骤:【Manage Jenkins】-【Configure Global Security】-【授权策略】,如下:

至此,每次在SVN客户端提交代码片刻后,会在Jenkins工作台中,看到对应工程正在被自动触发进行一次自动构建。

 四、构建后自动部署jar包

到了这一步,Jenkins的功力已经被挖掘了一半,剩下的一半便是,如何使Jenkins帮助我们在每一次手动或自动构建后,自动地部署应用或发布服务。这里介绍的是发布jar包应用。

我们先在Jenkins中配置发布脚本,在指定工程【配置】-【构建】中,增加一构建步骤【Execute shell】,如下:

自动发布脚本中引用了3个脚本,需提前将这三个脚本放在指定目录(如/root/songzehao/deploy/ds),并赋予可执行权限。

下面给出这几个脚本的代码:

  • Execute shell in Jenkins:
#!/bin/bash
cd /root/songzehao/deploy/ds
./stop.sh
./replace.sh
echo "Execute shell Finish"
BUILD_ID=dontKillMe nohup /root/songzehao/deploy/ds/startup.sh &
  • stop.sh:
echo "Stopping ds"
pid=`ps -ef | grep dataservice-1.0.0.jar | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ]
then
   echo "kill -9 的pid:" $pid
   kill -9 $pid
fi
  • replace.sh:
cp /root/.jenkins/workspace/DataService/target/dataservice-1.0.0.jar /root/songzehao/deploy/ds
  • start.sh:
java -jar /root/songzehao/deploy/ds/dataservice-1.0.0.jar --spring.profiles.active=test --server.port=8123

从此,SVN客户端的每次提交,都将自动触发Jenkins的自动构建,并自动发布最新版的jar包应用。通过以上环节便走上了CI/CD持续集成持续部署的道路,以此帮助我们及时发现最新的提交是否有问题。

发布了62 篇原创文章 · 获赞 22 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/songzehao/article/details/102630871