如何搭建Jenkins + Git + Maven + tomcat + nexus集成环境,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
实现“自动构建、部署”web应用
1、安装环境
操作系统:Centos 7.2
JDK:1.8.x
Maven:3.5.x
Git: 1.8.1,自建GitLab平台
tomcat:8.x
2.第三方安装安装和环境配置
增加hosts解析
JDK、Git、Maven、tomcat在上述2个宿主机器上都需要安装,即jenkins master和slave都需要这些环境。
1)JDK安装:略;安装后之后,请注意配置JAVA_HOME环境变量。
2)Maven安装:从apache下载tar.gz压缩包,在合适的目录下解压即可。此后配置M2_HOME环境变量。
如果使用私服的Maven中央仓库 nexus,要指定 /usr/server/apache-maven-3.5.0/conf/settings.xml
3)tomcat安装:略。
4)Git:安装非常简单,直接执行“yum install git”即可。
5)如果你的GitLab是自建的内网平台,千万不要忘了在上述2个宿主机器上增加hosts解析,例如:
安装一个tomcat ,其http端口为8082
下载jenkins的war包,并放到tomcat下 http://mirrors.jenkins-ci.org/war/
1)context.xml:增加jenkins环境变量,由tomcat挂载。
<Environment name="JENKINS_HOME" value="/u01/jenkins_home/" type="java.lang.String"/>
<Resources cachingAllowed="true" cacheMaxSize="200000"/>
“JENKINS_HOME”是jenkins的home目录,通常设定为“磁盘空间较大”的分区,这个目录中将放置maven build的文件,历史部署记录等等,所以将会消耗很大的存储空间
“cacheMaxSize” 指定内存单位K ,如果报内存不够时加
2)tomcat-users.xml:配置jenkins的用户,此后用户可以在jenkins的页面上登录和授权操作,对于jenkins的用户授权,官方提供了很多方式,比如LDAP、基于数据库等等。本实例基于tomcat user的方式,简单易用
添加2个管理员用户,其中admin可以对系统各项配置进行修改,manager可以管理项目、部署等。
<role rolename="manager"/>
<role rolename="admin"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="admin-gui"/>
<user username="admin" password="xxx" roles="admin,manager-gui,manager-script,manager-jmx,manager-status"/>
<user username="deployer" password="xxx" roles="manager,manager-gui,manager-script,manager-jmx,manager-status"/>
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:8082”,然后使用admin用户登录(用户密码参见tomcat-users.xml)。
1.用户权限配置
系统管理-->Configure Global Security
安全域: Jenkins专有数据库
搜索策略:登陆用户可以做任何事
2.mail 配置
系统管理-->系统配置-->Jenkins Location
填写系统管理员地址
系统管理-->系统配置-->邮件通知
SMTP服务器 smtp.126.com
用户默认邮件后缀 @126.com
使用SMTP认证
用户名 system_mail_ul@126.com
密码
3.jdk、git、maven配置
系统管理-->Global Tool Configuration
新增jdk、git、maven路径
/usr/server/jdk1.7.0_80
/usr/server/apache-maven-3.5.0
4.Build与发布
我们接下来创建一个job,这个job将从GitLab上下载源码到本地,然后使用Maven build和打包,并发布到tomcat上。这个过程正是我们常用的
Deploy to container plugin 这个插件,请首先安装;它主要用来将“war”文件“deploy/redeploy”到web容器中,比如tomcat、jboss等。有了这个插件,我们可以在maven
build之后,立即将war发布到tomcat中,而不需要手动操作或者写shell脚本来copy文件。
首先,我们需要准备一个tomcat,用来部署我们的web application,过程略。此tomcat的端口为8080,部署在master宿主机器上。
因为Deploy插件是通过外部(http)方式“deploy/redeploy”,所以需要在tomcat上进行用户授权。编辑tomcat-users.xml,增加如下配置:
<role rolename="manager"/>
<role rolename="admin"/>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="deployer" password="xxx" roles="manager,manager-gui,manager-script,manager-jmx,manager-status" />
增加一个“deployer”用户,我们可以通过tomcat manager机制来部署war。参见稍后讲解。
触发器实际是不需要的。
下面是我测试的样子
最后配置tomcat容器路径,大功告成,注意
此处tomcatA8为管理用户,需要具备manager-gui,manager-script,manager-jmx,manager-status权限,否则报错
如使用nginx代理,则需要设置最大缓冲大小大于war包大小,否则报错.
报错信息可在构建任务中的Console Output 菜单下查看
想打包正ROOT.war,有两种方法:
1.修改pom.xml文件中的 改成你想要的名字
2.上图设置中 Context path : /ROOT
其中“WAR/EAR
files”选项指定war的位置,这个路径是个相对路径,相对于“/home/jenkins_home/workspace/{你的item名称}”,本实例是一个maven多模块项目,且每个module打包的名称都为ROOT.war,这样方便部署。
请管理员指定正确的路径。
Containers中,我们使用了tomcat 7,输入上文我们设定的用户名和密码,指定tomcat Url,需要注意,既然应用是基于http manager的方式deploy,那么此tomcat的webapps自带的“manager”项目不能被删除,同时tomcat还需要处于启动状态。(tomcat也可能以为死亡,所以建议在pre step中加上对tomcat状态的判断,如果tomcat死亡,先执行startup.sh)。
如果在部署时,报错。请按照如下方式排查:
1)tomcat是否已经启动。
2)tomcat-users.xml是否配置正确。
3)tomcat的版本和“Deploy plugin”中container指定的是否一致。
4)tomcat下是否已经有ROOT项目,如果有,请删除,然后重启tomcat,此后再使用jenkins发布,因为reploy时会检测旧的ROOT和新的ROOT.war项目的版本相容性,如果不同,则会导致reploy失败。
构建日志:
[JENKINS] Archiving /u01/jenkins_home/workspace/gkgp/web/pom.xml to com.tudou.gkgp/web/1.0-SNAPSHOT/web-1.0-SNAPSHOT.pom [JENKINS] Archiving /u01/jenkins_home/workspace/gkgp/web/target/gkgp.war to com.tudou.gkgp/web/1.0-SNAPSHOT/web-1.0-SNAPSHOT.war [gkgp] $ /bin/sh -xe /home/jenkins/apache-tomcat-8.0.36/temp/hudson7572047694542790795.sh channel stopped Deploying /u01/jenkins_home/workspace/gkgp/web/target/gkgp.war to container Tomcat 8.x Remote with context /gkgp [/u01/jenkins_home/workspace/gkgp/web/target/gkgp.war] is not deployed. Doing a fresh deployment. Deploying [/u01/jenkins_home/workspace/gkgp/web/target/gkgp.war]Finished: SUCCESS
---END---
other: profile
各属性节点的值,用占位符"${属性名}"占位,maven在compile/package时,会根据profile的环境自动替换这些占位符为实际属性值。
默认情况下:
maven package
将采用默认激活的profile环境来打包,也可以手动指定环境,比如:
maven package -P dev
将自动打包成dev环境的部署包(注:参数P为大写)
实现“自动构建、部署”web应用实现“自动构建、部署”web应用
看完上述内容,你们掌握如何搭建Jenkins + Git + Maven + tomcat + nexus集成环境的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。