jenkins + svn + mvn + tomcat搭建CI服务

废话很少说,上步骤。web

环境:shell

  • centOS6.5
  • jenkins-1.651.2-1.1.noarch.rpm
  • jdk1.8
  • tomcat7
  • svn
  • mvn3.3.9

以上环境准备你们可自行google或baidu安装,我主要就讲讲如何整合成一个CI服务。浏览器

------------------------------------------------分隔线 ⊙﹏⊙‖∣----------------------------------------------------------tomcat

1,启动jenkins,我已作成服务,所以直接service jenkins start就好了。启动成功后能够看到以下 信息:bash

说明启动没有问题,咱们来访问看看,直接浏览器上输入http://你jenkins那台主机的ip:8080/,jenkins默认端口8080,自已能够改,只要不冲突。看到以下信息就访问成功:服务器

2,jenkins初始配置app

咱们将看到以下信息:ssh

初始时有默认参数,可不用更改,默认就好,咱们主要来配置JDK,MAVEN,Jenkins Location,Publish over SSH这三个配置项。webapp

1)点JDK安装,按照实际状况来填写参数。个人参数以下:maven

2)点Maven安装,一样按你实际状况来填。个人参数以下:

3)配置Jenkins Location,一样按你实际状况来填。个人参数以下:

这里说下Jenkins URL,这个地址其实就是你在浏览器访问Jenkins服务的地址,你是怎么访问的就怎么填。

4)配置Publish over SSH,这是个插件,用途很大,能够在jenkins中直接经过SSH服务来执行远程主机的脚本。咱们分两步来搞:

  1. 首先安装这个Publish over SSH插件
  2. 配置这个Publish over SSH插件

第一步:安装Publish over SSH插件十分简单,以下图:

进入插件管理页面中,咱们选择这个插件,再安装它。

装好后,咱们能够在“已安装”tab页中看到这个插件,以下:

第二步:配置Publish Over SSH插件,仍是去“系统管理--系统设置”里面配置,个人配置以下:

    

说明下SSH Server项的几个参数意思:

Name:随意写,你自已懂就行

Hostname:SSH服务器的地址

Username:SSH的账号

Remote Directory:这个比较重要,远程目录(Remote Directory)是干吗的,它是用来存放经过SSH执行脚本后生成的文件所存放的目录,

我这里写/my_bak意思是在SSH服务器根目下放我经过执行脚本(publish.sh这个脚本是用来备份和启动tomcat用的,后文会写出这个脚本)生成一些备份文件所在目录,

因此必定要先自已建立好。

配好后,点Test Configuration按钮测试下,成功以下 :

以上都配置完成后,点保存就行了。

上面作的这些都是基础配置,咱们开始搞一个项目吧。

------------------------------------------------分隔线 ⊙﹏⊙‖∣--------------------------------------------------------------------------

1,搞个maven项目,取名为my_project1

    

2,开始配置这个项目,主要配置 源码管理,  Build, SSH Publishers这三个。源码固然是构建maven项目时要用的,源码是放在svn上的,因此这两个必定得配对好。

第一,项目名称以下,不用管自动就有,以下:

    

第二,配置源码管理,以下:

选Subversion方式,填svn地址,个人是,其余默认就行。

第三,配置Build,以下:

 

第四,配置SSH Publishers,这个重点,我是结合shell脚原本搞的自动备份war包,自动上传war到tomcat webapp目录下,自动重启tomat的。

因此这里是须要一个脚本的,咱们命名为publish.sh,这个脚本咱们下面要配置的。源码以下:

#!/bin/bash
#defined 
TOMCAT_HOME="/opt/tomcat8083"
TOMCAT_PORT=8083
PROJECT="$1"
#param validate
if [ $# -lt 1 ]; then  
  echo "you must use like this : ./publish.sh <projectname> [tomcat port] [tomcat home dir]"  
  exit  
fi 
if [ "$2" != "" ]; then
   TOMCAT_PORT=$2
fi
if [ "$3" != "" ]; then
   TOMCAT_HOME="$3"
fi
#shutdown tomcat
"$TOMCAT_HOME"/bin/shutdown.sh
echo "tomcat shutdown"
#check tomcat process
tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT`
echo "current :" $tomcat_pid
while [ -n "$tomcat_pid" ]
do
 sleep 5
 tomcat_pid=`/usr/sbin/lsof -n -P -t -i :$TOMCAT_PORT`
 echo "scan tomcat pid :" $tomcat_pid
done
#publish project
echo "scan no tomcat pid,$PROJECT publishing"
rm -rf "$TOMCAT_HOME"/webapps/$PROJECT*
cp /my_bak/$PROJECT*.war "$TOMCAT_HOME"/webapps/$PROJECT.war
#bak project
BAK_DIR=/my_bak/bak/$PROJECT/`date +%Y%m%d`
mkdir -p "$BAK_DIR"
cp "$TOMCAT_HOME"/webapps/$PROJECT.war "$BAK_DIR"/"$PROJECT"_`date +%H%M%S`.war
#remove tmp
rm -rf /my_bak/$PROJECT*.war
#start tomcat
"$TOMCAT_HOME"/bin/startup.sh
echo "tomcat is starting,please try to access $PROJECT console url"

上面的shell按照自已实际来定。

有了这份shell脚本,咱们就能够配置SSH Publishers了,以下 :

参数说明下:

Source files:war包所在路径,这里是相对,也能够绝对路径

Remove prefix:发布到tomcat webapp目录下时不带war包的父级目录,只拷贝单独的war包,因此要移除掉war的目录

Exec command:执行上面的那段shell,shell是能够传参数的,因此这里是指定shell脚本所在路径和要传的参数,按自已实际来填。

好了,到这里最基本的配置已OK了,咱们能够试下水了。

-------------------------------------------------------------------------------------------------------------------------开始试水--------------------------------------

回到jenkins管理端首页,咱们能够看到刚才创建的maven项目

点“当即构建”,咱们能够看到页面上有信息输出,以下:

    

红色框中部分咱们能够看到maven install成功了!!!

经过jenkins的publish over ssh插件也成功执行了ssh服务器上的shell脚本,咱们看看tomcat有没有项目部署上去

能够看到部署上去且已启动解压了。

到这里一个简单的配置完成。不正之处请原谅,咱们共同探索jenkins更高级的功能。

相关文章
相关标签/搜索