Jenkins + Git + Maven + tomcat集成环境搭建

    折腾了好几天,终于把Jenkins + Git + Maven + tomcat集成环境搭建起来了,最终主要实现“自动构建、部署”web应用。

 

1、安装环境

    操作系统:Centos 6.5

    JDK:1.7.x

    Maven:3.1.x

    Git: 1.7.1,自建GitLab平台

    tomcat:7.x

 

    上述宿主机器2台:192.168.1.194,192,168.1.198,其中194为Jenkins Master,198位slave。

 

2、第三方安装安装和环境配置

    JDK、Git、Maven、tomcat在上述2个宿主机器上都需要安装,即jenkins master和slave都需要这些环境。

    1)JDK安装:略;安装后之后,请注意配置JAVA_HOME环境变量。

    2)Maven安装:从apache下载tar.gz压缩包,在合适的目录下解压即可。此后配置M2_HOME环境变量。

    3)tomcat安装:略。

    4)Git:安装非常简单,直接执行“yum install git”即可。

    5)如果你的GitLab是自建的内网平台,千万不要忘了在上述2个宿主机器上增加hosts解析,例如:

192.168.1.110    git.xxx.com

 

    上述环境安装,需要在Jenkins和slave上都进行,即slave上也需要JDK、Maven、Git,因为slave接收master的job调度后,将会使用Git从GitLab上同步代码并使用Maven进行build,这个过程都是在salve的本地进行。

 

    此外,两个宿主机器,还需要安装ssh-keygen等必要软件,同时它们还需要交换public Key,确保2个机器能够实现“无密码登陆”(过程略)。因为Jenkins在ssh传输时无法绕过“授权确认”的手动操作,所以管理员需要人为的进行一次ssh登陆。

 

3、jenkins  master

    master是job调度的分配者,我们需要首先安装部署它。从“https://jenkins-ci.org/”官网下载jenkins.war部署包,我们将jenkins.war通过tomcat部署,即使用tomcat挂在启动jenkins服务,因为这样我们可以非常简单的修改一些配置参数和维护。(启动jenkins服务的方式还可以通过jar方式启动,请参见其他说明文档)

 

    将master安装在192.168.1.194机器上,单独安装一个tomcat,其http端口为38080。并修改如下文件:

    1)context.xml:增加jenkins环境变量,由tomcat挂载。

<Context>
....
    <Environment name="JENKINS_HOME" value="/home/jenkins_home/" type="java.lang.String"/>
</Context>

 

    “JENKINS_HOME”是jenkins的home目录,通常设定为“磁盘空间较大”的分区,这个目录中将放置maven build的文件,历史部署记录等等,所以将会消耗很大的存储空间。

 

    2)tomcat-users.xml:配置jenkins的用户,此后用户可以在jenkins的页面上登录和授权操作,对于jenkins的用户授权,官方提供了很多方式,比如LDAP、基于数据库等等。本实例基于tomcat user的方式,简单易用。【备注:在下文中,提供了“非热部署”方式,将可以不用配置tomcat-users信息】

<tomcat-users>
      <role rolename="admin"/>
      <user username="admin" password="admin" roles="admin"/>
      <user username="developer" password="developer" roles="manager"/>
</tomcat-users>

 

    添加2个管理员用户,其中admin可以对系统各项配置进行修改,manager可以管理项目、部署等。

 

    3)将jenkins.war放置在webapps目录下,我们此处希望jenkins作为ROOT项目加载,所以删除原有的ROOT项目,并将jenkins.war重命名位ROOT.war,这样在通过http访问jenkins时,不需要加ContextPath了。

 

    4)启动jenkins tomcat:./startup.sh

    5)访问“http://192.168.1.194:38080”,然后使用admin用户登录(用户密码参见tomcat-users.xml)。

 

4、master配置

    如果master需要真正的能够运行job,我们还需要一些周密的配置。

 

    1)插件管理:



  

 

    jenkins master需要几个常用的插件,在“可选插件”中,建议将如下列表插件选中并安装:



 

 

    这些插件主要涉及到:ssh、Git、GitLab、Maven,已经后面我们需要提到的“deploy”插件。管理员可以根据需要选择性的安装需要的plugins。

 

    安装完之后,重启jenkins。

 

5、 系统配置

    在jenkins的“系统管理”-->“系统设置”页面,来设定master全局的配置,其中重要的2个选项位JDK和Maven,我们需要告知master它们安装在何处。

 

    1)JDK:


    2)Maven:


 

 

6、Build与发布

    我们接下来创建一个job,这个job将从GitLab上下载源码到本地,然后使用Maven build和打包,并发布到tomcat上。这个过程正是我们常用的。 

 

    1)新建Item:

    授权与验证:master需要ssh访问slave机器(部署、启动,发送文件等),以及从git上下载代码,所以我们在开始之前,需要指定这些。“jenkins”-->“Credentials”-->“Add Credentials”添加一个SSH验证规则:



 

    我们创建一个Global范围的SSH无密码登陆,这个可以在此后master与slave通讯有用。前提是master与slave已经交换了public key。“From the Jenkins master ~/.ssh”即使用master宿主机器“~/.ssh”目录下的公私钥。

    然后,我们“新建”:


 

    因为我们是基于Maven构建项目,所以选择第二项,如果你已经创建过类似的item,可以选择“复制已有的item”,输入item的名字,那么它相应的配置就会导入,就像模板一样,我们无需每次都重复填写配置表单。

 

    在创建item时,我们还需要指定,这个item的job运行结果最终保存在哪个“节点”上,例如web项目最终发布在哪个server上,在jenkins中,master和slaver都称为“节点”。



 

    

    指定Git库的地址,并配置master与GitLab通讯的SSH验证机制:

 

    因为master、slave均需要使用Git从远端下载代码,在这个模块中,“Credentials”选择刚才我们添加的“root”,这样jenkins使用Git下载代码时将会把SSH的秘钥发过去。此外,我们还需要在GitLab中目标项目中增加“deploy key”:



 

     我们将master、slave两个机器的public key添加到GitLab项目的“deploy key”中。如果你的item无法正确访问Git,比如“验证被拒绝”,你应该尝试通过shell登录到master、slave机器上,使用git命令尝试下载项目代码,可能因为jenkins无法跳过ssh的“授权确认”导致。

 

    2)部署脚本

    思路:在项目build成功后,关闭tomcat,删除旧的项目文件,然后将新的项目文件copy到webapps目录下,然后重启tomcat。如下为脚本,“deploy.sh”,我们将此脚本放置在每个节点的“/home”目录下,当然管理员可以放置任何可以访问的目录(有访问权限即可):

#!/bin/sh
echo "Tomcat:$1"
echo "Module:$2"
echo "++++++++++++++++++++++++++++++++"
pid=$(jps -v |grep $1 | grep -v 'grep $1' | awk '{print $1}')
#if instance is running,shutdown it!
if [ "$pid" ];then
    echo "Current instance is running,pid:$pid"
    echo "Shutdown now!"
	cd $1/bin
	./shutdown.sh
	sleep 3s
fi
#but somethimes,shutdown operation will be failure!
#check status for 10 times
i=0
while [ $i -lt 10 ]
do
    pid=$(jps -v |grep $1 | grep -v 'grep $1' | awk '{print $1}')
    if [ "$pid" ];then
        sleep 1s
        if [ $i -ge 10 ]
        then
            kill -9 $pid
            break
        else
            ((i++))
        fi
    else
        break
    fi
done
#remove current application files
cd $1/webapps
rm -r -f ROOT
rm -f ROOT.war
cd $1/bin
cd $WORKSPACE/$2/target
cp ROOT.war $1/webapps
cd $1/bin
./startup.sh
sleep 3s
pid=$(jps -v |grep $1 | grep -v 'grep $1' | awk '{print $1}')
echo "restart ok!"
echo "pid:$pid"
echo "++++++++++++++++++++++++++++++++"

 

    这个脚本,就是执行“关闭tomcat”、“删除文件”、“复制文件”、“重启tomcat”过程;脚本中可以引用jenkins的一些系统变量,比如“$WORKSPACE”表示当前build项目的工作空间;此脚本接收2个参数,我们约定,第一个参数表示“tomcat home路径”,第二个参数表示“项目module名称”用于告知需要部署那个web项目(这在多modules项目中有用)。

    我们需要删除原来的“Pre steps”,然后增加一个“Post steps”,选定为“Execute Shell”,输入如下语句:

BUILD_ID=dontKillMe /home/deploy.sh "<tomcat_home>" "<module_name>"

 

    其中<tomcat_home>和<module_name>替换成实际的字符串值。



 

  

     BUID_ID是jenkins的一个特殊的运行时变量,之所以这么做,原因就是直接使用shell启动tomcat是不行的,因为jenkins进程退出后其创建的、包括其调用的脚本创建的进程都将被一起销毁,参见:【ProcessTreeKiller

 

    配置完毕后,基本上就可以尝试“立即部署”了,通过控制台日志查看部署过程的问题,祝你好运!

 

7、Slave节点

    通过上文,我们已经在Slave机器上安装好了SSH、Git、Maven、JDK等,同时我们也需要在Slave节点安装一个tomcat,用来部署web application。

    需要注意的是,jenkins的slave不需要像master一样部署在tomcat上,我们只需要在jenkins的页面上操作即可,master将会通过ssh将slave.jar文件到slave节点上,并启动slave。

    通过导航:“系统管理”-->“节点管理”-->“新建节点”,来增加slave。其实此时我们已经看到“master”节点已经被默认添加进来了。

 

 

    保存后,会提示你“启动slave”,你可以根据需要是否启动slave。

 

    此后那些需要部署在slave宿主机器上的web应用,只需要在创建item时指定“Restrict where project can be run”为slave即可。

JTM 说明文档 ---------------------------------------------------------------------------------- http://www.shopxx.net ---------------------------------------------------------------------------------- 一、什么是JTM JTM是Win32下绿色免费的JDK + Tomcat + MySQL环境集成工具。通过JTM用户无需对JDK、Tomcat、 MySQL进行任何安装和配置即可迅速搭建支持JSP + MySQL的服务器运行环境。 二、系统需求及集成软件 1. 系统需求: 内存: 256MB 可用空间: 至少 200MB 可用剩余空间 操作系统: Windows 2000/XP/2003/Vista/7 2. 集成软件: JDK 1.6 Tomcat 6.0 MySQL 5.1 三、安装使用 1. 下载JTM ( http://www.shopxx.net ) 2. 下载后将软件解压至任意位置( 安装路径只允许包含数字、字母、空格、\、/、:、.、- ) 3. 运行 "JTM.bat" 根据提示进行相关操作 四、程序说明 Tomcat默认端口:8080 MySQL默认端口:3306 MySQL默认用户名:root MySQL默认密码:root 目录结构 X:\安装路径 | +---JTM.bat (系统控制台) | +---jdk (JDK 程序目录) | +---tomcat (Tomcat 程序目录) | | | +---webapps (站点目录) | | | +---conf (Tomcat 配置目录) | +---mysql (MySQL 程序目录) | +---my.ini (MySQL 配置文件) | +---data (MySQL 数据库目录) 五、许可协议 1、您可以完全免费的使用JTM. 2、JTM是一个集成工具,其中各组件的许可协议是独立分开的. 3、您在使用JTM过程中必须保留JTM名称、网址、版权等信息. 六、常见问题 1、运行程序提示 "JTM安装路径包含特殊字符" 怎么办? 修改程序安装路径,并确保路径只包含数字、字母、空格、\、/、:、.、-. 2、Tomcat端口被占用Tomcat无法正常启动,如何处理? 运行 "JTM.bat" 根据提示修改Tomcat端口. 3、MySQL端口被占用MySQL无法正常启动,如何处理? 运行 "JTM.bat" 根据提示修改MySQL端口. 4、MySQL root密码忘记了,怎么办? 运行 "JTM.bat" 根据提示修改MySQL root密码. 5、如何在Windows Vista下使用JTM? Windows Vista的UAC可能会阻止服务用普通用户身份启动,请右键点击 "JTM.bat",选择 "属性" 在选项卡 "兼容性" 里,勾选 "请以管理员身份运行该程序". 6、如何在Windows 7下使用JTM? Windows 7的UAC可能会阻止服务用普通用户身份启动,请右键点击 "JTM.bat",选择 "以管理员身份运行".
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值