使用jenkins进行项目构建

来源:互联网 发布:淘宝改差评技巧 编辑:程序博客网 时间:2024/05/22 06:17
当服务器的数量比较多的时候,部署项目的时候如果仍然采取最原始的方法(如使用WinSCP等工具手动拖代码),不仅效率低下,而且对于改动比较多的项目,遗落掉文件也是时常发生的事情。这种工作真的让程序员觉得一点成就感都没有。于是,我们找到了Jenkins工具,Jenkins是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:1、持续的软件版本发布/测试项目。2、监控外部调用执行的工作。
简单来说,使用Jenkins工具,发布项目的时候我们只需要点一下立即构建按钮,上传变动代码,重启服务器(如果需要)等等这些工作它都可以承包了。

一、安装

安装Jenkins很简单,首先去Jenkins官网下载:http://jenkins-ci.org/,然后执行rpm -ivh jenkins-1.633-1.1.noarch.rpm命令即可完成安装
安装完成后使用service jenkins start启动,默认端口8080,通过浏览器即可访问。
修改默认的端口号,请编辑这个文件:/etc/sysconfig/jenkins

二、配置

在这里主要配置三个地方,设置操作权限、JDK以及MAVEN,选择SVN对应的版本,其他的可以使用默认。

设置操作权限

jenkins默认任何用户可以做任何事情,出于安全考虑,最好设置为登录用户才可以做任何事情。
在系统管理>Configure Global Security,启用安全,选上允许用户注册和登录用户可以做任何事即可。

JDK以及MAVEN

         JDK和MAVEN的配置在系统管理>系统设置里面操作,只需要填写你在机器上安装的路径即可,不推荐让jenkins自动安装。


三、创建项目

新建Item

一般来说,项目有dev、alpha、beta、product四种环境。除去我们本地的开发环境,我们使用jenkins对其他三种环境进行项目构建,每种环境又分为构建后重启(tomcat)、不重启(tomcat)两种。如下图所示,没有加_restart的代表构建成功后不重启tomcat。

我们可以先新建一个Item,后续的Item选择复制已有的Item,如下图。完成后在配置只需要做些参数上的修改即可。

配置Item

       此处用ssm_local和ssm_local_restart的配置作为解释。
       点击视图列表中的ssm_local进入Item,点击左侧的配置,进入到Item的详细配置。描述只是帮助你更换的理解这个Item是做什么的。
主要的配置有svn和shell 脚本两个地方。如果你使用svn进行持续集成,选择Subversion,填写svn的URL,输入用户名和密码,当构建项目的时候jenkins会从这个地址更新最新的提交,然后进行项目构建。

在Root POM填写 pom.xml
在Goals and options 填写要执行的maven命令,我们有三种环境,所以需要带上参数,maven执行命令时使用对应的配置文件。新增一个shell脚本命令,执行/mnt/datadrive/deploy.sh这个shell脚本,第一个参数是这个Item的名称,第二个参数是maven编译后的项目名称。点击保存按钮就完成了配置。

重启跟不重启的区别也在于shell脚本这里,重启的shell脚本配置如下图:
第一个shell脚本比不重启的脚本多了一个参数restart(为何要多加restart,请到后面看 deploy的脚本便可知道),其他的完全一样。
唯一不同的是这里多了一个shell,告诉jenkins我还需要执行这个restart.sh重启脚本。第一个参数为保存服务器的IP和登录信息,第二个参数是服务名称。

四、shell 脚本

deploy.sh

#!/bin/shpwdpath=$(cd "$(dirname "$0")"; pwd)ver=$1project=$2restart=""if [ $# == 3 ]; then   restart="_"$3fiwebapps=/mnt/apache-tomcat-7.0.61/webappssource=/var/lib/jenkins/workspace/$ver$restart/target/$projecti=0for line in `cat $pwdpath/$ver.server`do  host=`echo $line | awk -F ":" '{print $1}'`  port=`echo $line | awk -F ":" '{print $2}'`  user=`echo $line | awk -F ":" '{print $3}'`  pass=`echo $line | awk -F ":" '{print $4}'`  echo "======= Deploy the `expr $i + 1`th server, name -> $host:$port ======="  sshpass -p $pass rsync -vr --delete  '-e ssh -p '$port'' $source $user@$host:/$webapps  let i++done

restart.sh

#!/bin/shpwdpath=$(cd "$(dirname "$0")"; pwd)ver=$1server=$2i=0for line in `cat $pwdpath/$ver.server`do  echo "======= Restart the "`expr $i + 1`"th server ======"  temp=`expr $i % 2`  s=`expr $temp \* 60`  host=`echo $line | awk -F ":" '{print $1}'`  port=`echo $line | awk -F ":" '{print $2}'`  user=`echo $line | awk -F ":" '{print $3}'`  pass=`echo $line | awk -F ":" '{print $4}'`  sshpass -p $pass ssh -p $port $user@$host 'service '$server' restart'  echo "Sleep "$s" ..."  sleep $s  let i++done

ssm_local.server

192.168.1.102:22:root:123456

五、项目构建

选择ssm_local_restart 点击立即构建,查看控制台输出,我们可以看到进行了文件同步,并且重启了tomcat。

六、总结

至此,我们已经可以很方便的使用jenkins持续的软件版本发布,当svn有更新的时候,我们可以点击一下立即构建,jenkins就会帮我们做好一切工作,再也不用一个文件一个文件的使用winSCP拖动上传了。
但其实还有一点瑕疵,同步文件的时候现在使用的是比对时间同步,当jenkins执行maven命令时,因为执行了clean命令,所以其实也是所有文件都需要再同步一次,因此deploy脚本还有待进一步修改,敬请期待。
0 0
原创粉丝点击