jenkins持续集成配置.docx
《jenkins持续集成配置.docx》由会员分享,可在线阅读,更多相关《jenkins持续集成配置.docx(15页珍藏版)》请在冰豆网上搜索。
jenkins持续集成配置
Jenkins环境搭建
(一)简介
Jenkins,是从Hudsonfork出的一个开发分支,因与OracleHudson商标纠纷改名为Jenkins(详见),Jenkins是基于Java开发的一种持续集成工具,用于监控秩序重复的工作,包括:
软件版本发布/测试的持续集成、外部调用执行工作的监控等。
(二)jenkins安装
jenkins安装方式有多种,常见的安装方式如下:
一、jenkins.war部署到tomcat容器
1.下载jenkins.war包
2.下载地址:
http:
//jenkins-ci.org/
3.如图:
进入首页,下载最新版本
4.将jenkins.war部署到新解压的tomcat的webapps下,启动tomcat,在浏览器中访问jenkins界面,访问路径:
http:
//IP:
8080/Jenkins.其中IP为jenkins服务器所在的主机ip.
(三)yum安装jenkins
wget -O /etc/yum.repos.d/jenkins.repo http:
//pkg.jenkins-ci.org/redhat/jenkins.repo
rpm --import http:
//pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
yum install jenkins
一条一条命令执行完成后,jenkins就安装完成了,然后需要配置下jenkins的端口,避免冲突。
vi /etc/sysconfig/jenkins
进入该文件,这个是jenkins的系统配置文件,
找到2处修改端口号:
JENKINS_PORT="8080"
JENKINS_AJP_PORT="8009"
默认是这样的,我们可以随意修改成自己需要的端口号,避免冲突(tomcat默认端口也是这样的)
这里作者修改成了:
JENKINS_PORT="11111"
JENKINS_AJP_PORT="11112"
接下来我们就可以尝试启动jenkins服务了。
service jenkins start
如果提示:
StartingJenkins [确定]
则表示jenkins服务成功启动,你可以通过http:
//ip:
端口号的方式直接访问jenkins了。
但是一般情况下会报错:
Starting Jenkins bash:
/usr/bin/java:
没有那个文件或目录 [失败]
如果出现该错误也不需要慌张,报这个错的原因是因为你的jdk配置错误,
执行命令:
java -version
javaversion"1.7.0_71"
Java(TM)SERuntimeEnvironment(build1.7.0_71-b15)
JavaHotSpot(TM)64-BitServerVM(build23.25-b01,mixedmode)
我们可以看到jdk版本为1.7.0_71,复制该名称
vi /etc/init.d/jenkins
找到这段代码
candidates="/etc/alternatives/java/usr/lib/jvm/java-1.6.0/bin/java/usr/lib/jvm/jre-1.6.0/bin/java/usr/lib/jvm/java-1.7.0/bin/java/usr/lib/jvm/jre-1.7.0/bin/java/usr/lib/jvm/java-1.8.0/bin/java/usr/lib/jvm/jre-1.8.0/bin/java/usr/bin/java
我们会发现这里面没有叫1.7.0_71的文件目录
我们在这段代码后面加上
/usr/java/jdk1.7.0_71/bin/java
效果如下:
candidates="/etc/alternatives/java/usr/lib/jvm/java-1.6.0/bin/java/usr/lib/jvm/jre-1.6.0/bin/java/usr/lib/jvm/java-1.7.0/bin/java/usr/lib/jvm/jre-1.7.0/bin/java/usr/lib/jvm/java-1.8.0/bin/java/usr/lib/jvm/jre-1.8.0/bin/java/usr/bin/java/usr/java/jdk1.7.0_25/bin/java"
保存退出。
重新执行启动命令:
service jenkins start
停止命令:
service jenkins stop
重启命令:
service jenkins restart
成功启动后,我们就可以通过http:
//ip:
端口号访问了。
如:
我们的jenkins访问地址:
172.19.21.110:
11111
首页如下图:
(四)设置用户管理:
1.点击系统管理,选择ConfigureGlobalSecurity选项,
2.弹出新的界面,注册管理员用户,并为其添加权限,选择允许用户注册,设置成功后注销,用新的用户登录,
(五)系统配置环境所需的工具
1.点击系统管理-系统设置选项,系统设置页面如图所示,配置jenkins运行所需的环境,
2弹出系统配置界面:
配置jdk,ant,maven,如果是构建maven项目,不用配ant,已经安装好以下软件,就不用勾选自动安装选项,配置成功后,新建job.
(六)新建job任务
1.点击新建选项,新建一个job,所示,此处选择构建maven项目,点击ok,进入构建项目配置页面,配置需要构建的相关信息,
跳转到配置页面,此处显示启用项目安全选项,可以为job添加用户权限,选择丢弃旧的构建
2.配置svn,输入svn地址,根据提示,输入用户名及密码
(七)构建触发,
此处选择Buildperiodically,设置定时构建,设置形式点击右侧的问号,显示详细设置信息,
Maven配置,po.xml文件为项目的pom.xml文件
此处说明:
配置maven时,替换maven子目录conf/settings文件为该项目的settings文件,maven本地仓库在settings文件中指定仓库的路径,点开高级选项选择自定义maven本地仓库.Goalsandoptions设置打包,
3.脚本编写,如果是服务器与部署的应用在同一主机上,则不用远程部署,也不用配置从节点,只需编写脚本即可,
如果是linux,选择如下:
编写相应的脚本,
A停止tomcat服务:
注意:
停止tomcat之前必须加上如下的表达式:
BUILD_ID=dontKillMe;
原因:
在jenkins的使用中,遇到过一个场景是:
在web代码更改之后,能自动部署测试服务器,我们写了脚本来重启服务,在使用jenkins的任务自动跑这个脚本后发现,服务没有起来,开始以为是脚本的问题,但是直接执行没有问题,Jenkins任务结束关掉所有的子进程,
临时改变BUILD_ID的值,使得jenkins不会找到脚本启动的后台进程.BUILD_ID=dontKillMe
问题的根本在于jenkins使用processTreeKiller杀掉了所有子进程,而且这是jenkins的默认动作,当一次build结束,或被人终止,必然需要结束这次build启动的子进程.
B备份webapps下不同版本的war包
执行命令,将新打包的应用war包,备份到新的文件夹,命名为当前时间
C清空webapps
只清空webapps下的应用的war包,
D复制war到webapps
每次build都会产生默认的工作空间,将工作空间的war包复制到要部署的服务器上,
E启动tomcat服务
一个简单地构建项目已经完成了,点击应用,保存,立即构建,查看控制台,相应的目录有无出现部署的war包,查看相关日志
完整脚本如下(根据自己的需求修改):
#!
/bin/bash
#defined
exportJAVA_HOME=/opt/java
TOMCAT_HOME="/data4/tomcat"
TOMCAT_PORT=8080
PROJECT="$1"
#paramvalidate
if[$#-lt1];then
echo"youmustuselikethis:
./publish.sh[tomcatport][tomcathomedir]"
echo"youmustuselikethis:
./publish.shIQS8080/data4/tomcat"
exit
fi
if["$2"!
=""];then
TOMCAT_PORT=$2
fi
if["$3"!
=""];then
TOMCAT_HOME="$3"
fi
#shutdowntomcat
cd$TOMCAT_HOME/bin/
./shutdown.sh
sleep3
echo"tomcatshutdown"
sleep2
#checktomcatprocess
tomcat_pid=`/usr/sbin/lsof-n-P-t-i:
$TOMCAT_PORT`
echo"current:
"$tomcat_pid
while[-n"$tomcat_pid"]
do
sleep5
tomcat_pid=`/usr/sbin/lsof-n-P-t-i:
$TOMCAT_PORT`
echo"scantomcatpid:
"$tomcat_pid
done
tomcat_pid=`/usr/sbin/lsof-n-P-t-i:
$TOMCAT_PORT`
echo"scantomcatpid:
"$tomcat_pid
echo"scannotomcatpid,$PROJECTpublishing"
#publishproject
echo"清空旧版本文件"
rm-rf"$TOMCAT_HOME"/webapps/$PROJECT*
echo"清空旧版本缓存……"
rm-rf"$TOMCAT_HOME"/work/Catalina/localhost/$PROJECT*
cp/opt/war/$PROJECT*.war"$TOMCAT_HOME"/webapps/
sleep3
#bakproject
BAK_DIR=/opt/war/bak/$PROJECT/`date+%Y%m%d_%T_%A`
mkdir-p"$BAK_DIR"
echo"备份文件……"
cp$TOMCAT_HOME/webapps/$PROJECT*.war"$BAK_DIR"/
sleep6
#removetmp
rm-rf/opt/war/$PROJECT*.war
#starttomcat
cd$TOMCAT_HOME/bin/
nohupshstartup.sh&
echo"tomcatisstarting,pleasetrytoaccess$PROJECTconsloneurl"
(八)部署
插件部署,方便快捷,但是有很多局限性
(一)使用插件部署DeploytocontainerPlugin
1.系统管理->管理插件->可选插件->搜索“DeploytocontainerPlugin”,勾选插件直接安装,等着Jenkins自动安装完成。
此时我们打开我们之前新建的项目选择“增加构建后的操作”中增加了一项“Deploywar/eartoacontainer",将我们的war和ear工程部署到容器。
2.我们添加一个deploywar/eartoacontainer选择,Jenkins中构建后操作多出一个发布选项
WAR/EARfiles:
是war包的相对路径
contentpath:
tomcat的发布路径,即使用localhost/(contentpath设置的名字)来访问项目.
contaners:
发布到的容器,主要可发布到tomcat、jboss、GlassFish
deployonfailure:
发生错误的时候是否发布到tomcat
3.点击addcontaners添加发布的容器,我们这里要发布到tomcat,所以我这里添加的是tomcat
如果你部署的是集群环境那么可以添加多个容器来部署应用。
此时只要我们运行我们的任务即可将我们的应用发布到tomcat,记住这里要把应用服务器的防火墙关闭。
这里在多说一点tomcat默认的登录是注释的,我们需要打开。
在tomcat/conf/tomcat-users.xml下添加以下代码即可;
在标签中添加代码如下:
使用系统管理->管理插件->可选插件->搜索“PubishOverSSH”,
安装完成后此时我们打开我们之前新建的项目选择“增加构建后的操作”中增加了一项“
(九)邮件服务
1.设置系统管理员邮件地址
2.参考如下链接: