使用jenkins进行项目构建
2015-10-18 20:18
232 查看
当服务器的数量比较多的时候,部署项目的时候如果仍然采取最原始的方法(如使用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的配置在系统管理>系统设置里面操作,只需要填写你在机器上安装的路径即可,不推荐让jenkins自动安装。
一般来说,项目有dev、alpha、beta、product四种环境。除去我们本地的开发环境,我们使用jenkins对其他三种环境进行项目构建,每种环境又分为构建后重启(tomcat)、不重启(tomcat)两种。如下图所示,没有加_restart的代表构建成功后不重启tomcat。
我们可以先新建一个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和登录信息,第二个参数是服务名称。
选择ssm_local_restart 点击立即构建,查看控制台输出,我们可以看到进行了文件同步,并且重启了tomcat。
至此,我们已经可以很方便的使用jenkins持续的软件版本发布,当svn有更新的时候,我们可以点击一下立即构建,jenkins就会帮我们做好一切工作,再也不用一个文件一个文件的使用winSCP拖动上传了。
但其实还有一点瑕疵,同步文件的时候现在使用的是比对时间同步,当jenkins执行maven命令时,因为执行了clean命令,所以其实也是所有文件都需要再同步一次,因此deploy脚本还有待进一步修改,敬请期待。
简单来说,使用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/sh pwdpath=$(cd "$(dirname "$0")"; pwd) ver=$1 project=$2 restart="" if [ $# == 3 ]; then restart="_"$3 fi webapps=/mnt/apache-tomcat-7.0.61/webapps source=/var/lib/jenkins/workspace/$ver$restart/target/$project i=0 for 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/sh pwdpath=$(cd "$(dirname "$0")"; pwd) ver=$1 server=$2 i=0 for 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脚本还有待进一步修改,敬请期待。
相关文章推荐
- 《第二次二十岁》——失去自我便失去一切
- nginx配置文件详解
- 2.4 内存管理结构mem_map初始化
- 2.3 设置虚拟盘空间并初始化
- 2.2 规划物理内存格局,设置缓冲区、虚拟盘、主内存
- java IO流
- 线上界面和设计原稿
- JQuery中的小技巧,,,连载中。。。
- Android开发规范
- Tsinghua OJ:范围查询(Range)
- 声音的基本参数
- 信息安全系统设计基础第五周学习总结
- python保存文件UnicodeEncodeError以及reload(sys)后print失效问题
- 巴什博奕
- JS基础
- 快速删除docker中的容器
- STL 算法
- STL扩展容器
- 界面设计颜色调节小助手
- UI初学者必须慎重对待的五个误区