使用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的配置作为解释。主要的配置有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
- 使用jenkins进行项目构建
- 使用jenkins进行项目的自动构建部署
- 使用Jenkins进行自动化构建
- 使用Jenkins构建Maven项目
- 使用Jenkins构建一个自由的项目
- 使用Jenkins配置自动化构建maven项目
- 使用jenkins持续构建、部署SpringBoot项目
- Jenkins配合GitLab进行项目持续集成与构建
- 使用maven进行项目构建
- 使用jenkins进行一键式部署项目
- jenkins 自动构建项目
- Jenkins定时构建项目
- jenkins 构建项目
- Jenkins构建GitHub项目
- Jenkins构建一个项目
- jenkins 构建嵌套项目
- Jenkins项目构建配置
- Jenkins + svn 构建项目
- ACM算法学习
- 寄存器与缓存
- git install 报错处理
- BestCoder Round #60 5505GT and numbers
- 求大神帮忙解决一下 我ajax 传输不到后台servlet里面
- 使用jenkins进行项目构建
- 数据库连接池DBPool分析(九):Theron库+gtest来测试
- 线性表---双向循环链表
- 九度OJ 1038:Sum of Factorials(阶乘的和) (DP、递归)
- jdbc事务
- 我的博客开篇
- /proc/cpuinfo中siblings 和 cpu cores的区别
- web上传以及细节
- Struts-国际化