如何搭建Jenkins + Git + Maven + tomcat + nexus集成环境

发布时间:2021-11-05 17:38:59 作者:柒染
来源:亿速云 阅读:181

如何搭建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挂载。

  1. <Environment name="JENKINS_HOME" value="/u01/jenkins_home/" type="java.lang.String"/>


  2. <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可以管理项目、部署等。

  1. <role rolename="manager"/>

  2. <role rolename="admin"/>

  3. <role rolename="manager-gui"/>

  4. <role rolename="manager-script"/>

  5. <role rolename="manager-jmx"/>

  6. <role rolename="admin-gui"/>

  7. <user username="admin" password="xxx" roles="admin,manager-gui,manager-script,manager-jmx,manager-status"/>

  8. <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,增加如下配置:

  1.     <role rolename="manager"/>

  2.     <role rolename="admin"/>

  3.     <role rolename="manager-gui"/>

  4.     <role rolename="manager-script"/>

  5.     <user username="deployer" password="xxx" roles="manager,manager-gui,manager-script,manager-jmx,manager-status" />


增加一个“deployer”用户,我们可以通过tomcat manager机制来部署war。参见稍后讲解。

如何搭建Jenkins + Git + Maven + tomcat + nexus集成环境





触发器实际是不需要的。

如何搭建Jenkins + Git + Maven + tomcat + nexus集成环境

如何搭建Jenkins + Git + Maven + tomcat + nexus集成环境
如何搭建Jenkins + Git + Maven + tomcat + nexus集成环境

下面是我测试的样子

最后配置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集成环境的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

推荐阅读:
  1. Git代码提交流程及git命令的示例分析
  2. 使用Jenkins时如果GIT_COMMIT无变化该怎么办

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

git jenkins maven

上一篇:如何解决SQL Server乱码问题

下一篇:CRS资源启动失败的案例分享

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》