基础组件安装:
一、配置Jenkins持续部署
何为持续部署,顾名思义。就是通过前期简单的配置使之能持续自动地完成测试、构建、部署等一系列步骤。如果想具体了解的话可以参考阮一峰大神的这篇文章http://www.ruanyifeng.com/blog/2015/09/continuous-integration.html。
二、背景介绍
东家有这么一个项目,该项目涉及到四个模块,并且依次存在一定的依赖关系,然后都是通过git工具进行版本控制管理,所以在编译打包的时候,建议最好是遵循依赖关系进行顺序打包,不然有可能会出现编译失败不通过的情况。
项目依赖关系:
image.png
三、配置步骤
3.1、左侧导航栏选择【新建】
image.png3.2、输入item名称(这里以git-workbench-main为例,如果出现重名会提示),选择【构建一个自由风格的软件项目】,当然也可以选择【构建一个maven项目】,我通常习惯第一种。
image.png3.3、选择部署节点(这里默认选择master节点就行了,如果配置了多个节点,然后又需要构建到其他节点那么这个地方修改一下就可以了)
这里需要特别说明一下,请允许我举个栗子。
a>假设目前有台机器A【10.0.4.12】,如果A机器安装了jenkins,然后应用(tomcat应用或者dubbo服务)也需要部署到A机器,则相当于只有一个节点【master】(即单节点),这里填master即可。同时A机器需要配套安装JDK环境(运行java程序),Maven环境(编译打包),git环境(拉取仓库代码)。
b>对于上述第一种单节点环境,如果我们的应用恰巧也是单节点部署,那不会有什么问题;但是现实问题显然不会这么简单,如今的互联网应用基本都要支持高可用(然而要支持高可用,集群肯定是少不了的),假设现在有两台集群的话,机器A【10.0.4.12】和机器B【10.0.4.13】,倘若采用第一种方案,那么就需要机器B也要安装jenkins,这样一来机器一多的话就需要每台机器都装上jenkins,显然有些繁琐。于是乎jenkins【从节点】配置就应运而生。
image.png有了【从节点】的概念之后,那么我们就可以这样做了,只在其中一台机器上安装jenkins,比如在机器A上安装jenkins,机器B作为jenkins的【从节点】机器(当然从节点机器肯定也需要安装jdk、maven、git基本环境,其实这样一来好像也没简便多少,只是不用再装一个jenkins而已了),然后就可以使用jenkins打包将项目构建到从节点机器了。关于从节点的配置后面会涉及到,这里先卖个关子。
3.4、添加git仓库,如果是多项目,需要安装Multiple SCMs Plugin插件(直接在管理插件里面搜索安装即可),单个项目直接使用选择Git就行。
image.png3.5、继续添加项目(还是添加git),其他照旧。
image.png3.6、添加拉取git代码的凭证
image.png3.7、配置git凭证信息,配置完保存即可
image.png3.8、什么都不用配置,默认就可以
image.png3.9、配置前置步骤(一般用于编译打包需要依赖的项目)
image.png3.10、配置maven编译打包命令和指定pom.xml文件的路径
image.png3.11、配置编写好的shell部署脚本,(需要注意前面需要加上export BUILD_ID命令,不然jenkins会自动kill掉衍生进程,大家可以试一下,jenkins显示构建成功,但是实际使用ps查进程的时候发现进程不存在。)
image.png3.12、关于jenkins自动kill掉衍生进程的问题请参考文章《jenkins中通过execute shell启动的进程会被杀死的问题》
http://blog.csdn.net/zhengxu189891/article/details/18710155
3.13、完整的shell部署脚本(deploy_git_workbench_main.sh ):
基本思路:判断jenkins打包是否成功,杀进程,备份老的部署包,拷贝新的的部署包,起服务。
#!/bin/bash
sourcejar=/var/lib/jenkins/workspace/git-workbench-main/lms-workbench/deploy/target/deploy-1.3.0-assembly.tar.gz
jarname=deploy-1.3.0-assembly.tar.gz
target=/data/program/lms-workbench
errorlog=/data/logs/jenkins/error_dubbo.log
keyword="/data/program/lms-workbench"
echo "start check jar is exits?"
echo "$sourcejar"
# 判断 jenkins 打包是否成功,target目录是否存在
if [ ! -f "$sourcejar" ]
then
echo "jar is not exists" >>$errorlog
exit 0
fi
#stop old dubbo server
#compel close dubbo server
pid= ps aux |grep $keyword |grep -v grep |awk '{print $2}'
if [ -n "$pid" ]
echo $pid
then
echo ========kill dubboservice begin==============
echo $pid
kill -9 $(ps aux |grep $keyword |grep -v grep |awk '{print $2}')
fi
# enter into dubbo servier diretory
cd $target
#delete old file
\rm -r deploy-1.3.0
\rm $jarname
#copy new file to diretory
cp $sourcejar ./
tar -zxvf $jarname
sleep 5
# start dubbo server
sh /data/program/lms-workbench/deploy-1.3.0/bin/restart.sh
echo "=== start dubbo service"
到这里,使用jenkins进行项目的构建基本就可以了,下一篇文章会介绍从节点和SSH免密登录的配置方法,敬请期待.......
网友评论