本文转载自http://shift-alt-ctrl.iteye.com/blog/2208786
折腾了好几天,终于吧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>
- <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)“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,增加如下配置:
- <tomcat-users>
- <role rolename="manager"/>
- <role rolename="admin"/>
- <user username="deployer" password="deployer" roles="standard,manager,admin,manager-script" />
- </tomcat-users>
增加一个“deployer”用户,我们可以通过tomcat manager机制来部署war。参见稍后讲解。
2)新建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的“授权确认”导致。
当代码从Git下载之后,启动Maven build阶段:
在“Pre step”中,我们增加了一小段shell,主要作用就是在发布之前,先删除web应用的tomcat中原有的ROOT.war(在某些版本的tomcat,还需要增加一行“rm -r -f ROOT”,即将原有项目的所有文件删除,才能触发tomcat undeploy操作),这或许是“Deploy plugin”的bug,如果ROOT.war已经存在,则无法再次deploy/redeploy。
在Maven build时,我们指定“Goals”,这个很重要,否则Maven build就没有意义了。“Goals and options”根据个人项目的情况来定义,选择合适的profile环境。
下面我们介绍“Deploy plugin”,这个插件就是将Maven打包生成的war,发布到指定的tomcat下。很好的一个插件。
其中“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失败。
到此为止,第一个item配置完毕,保存后即可通过“立即构建”来部署我们的项目了。
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即可。
---END---
other: profile
各属性节点的值,用占位符"${属性名}"占位,maven在compile/package时,会根据profile的环境自动替换这些占位符为实际属性值。
默认情况下:
maven package
将采用默认激活的profile环境来打包,也可以手动指定环境,比如:
maven package -P dev
将自动打包成dev环境的部署包(注:参数P为大写)
gitlab/github可以添加Webhooks实现自动部署
如果是springboot项目,则配置更简单
相关推荐
本文主要讲述如何使用 Jenkins、Git、Maven、Shell 和 Tomcat 搭建一个持续集成环境,以提高软件开发效率和质量。首先,Jenkins 是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变得可能。...
Jenkins+Git+Maven+Tomcat 自动化集成环境搭建 本文将详细介绍如何使用 Jenkins、Git、Maven 和 Tomcat 实现自动化构建、部署 web 应用程序的集成环境。 环境安装 首先,我们需要安装以下环境: 1. 操作系统:...
在Windows平台上搭建Jenkins+maven+git实现自动化发布,首先需要准备好以下环境: - **JDK**: 安装Java Development Kit (JDK),本文案例中的路径为`C:\Program Files\Java\jdk1.8.0_131`。 - **Maven**: Maven用于...
在Linux环境中,构建一个基于Jenkins、Git、Maven和Tomcat的高可用集成系统是一项重要的任务,这对于持续集成和持续部署(CI/CD)流程至关重要。以下将详细阐述这个集成过程中的关键知识点。 首先,我们需要了解每...
实战 Docker+Jenkins+Git+Registry 构建持续集成环境 本文将详细介绍如何使用 Docker、Jenkins、Git 和 Registry 构建持续集成环境,实现自动化的 Java 项目发布流程。 知识点 1: Jenkins 简介 Jenkins 是一个...
在本项目中,我们利用Jenkins、Maven、Gitlab和Tomcat这四个工具实现了一个完整的自动化工作流。 首先,让我们来详细了解这些工具及其在自动化过程中的作用: 1. **Jenkins**:Jenkins 是一个开源的持续集成(CI)...
在这个场景中,我们讨论的是如何利用Jenkins插件与Maven、Git和HTML报表集成,以实现高效、自动化的开发流程。 1. **Maven集成**: Maven是Java项目管理工具,用于构建、依赖管理和项目信息管理。在Jenkins中,Maven...
本篇文章主要介绍了如何搭建一个基于maven、git、jenkins和tomcat的持续集成环境,适合初学者参考。 首先,我们需要的基础环境是Java开发环境,确保已安装JDK并在环境变量中设置了`JAVA_HOME`,并将`%JAVA_HOME%\...
【Jenkins + Maven + Tomcat 插件自动部署】是一种高效、自动化的方式,用于持续集成和部署Java应用程序。本文将详细介绍如何配置和使用这个流程。 首先,我们需要在服务器上安装必要的环境,包括Jenkins、Maven、...
以下是如何利用Jenkins、Maven和Git实现SpringBoot项目的自动化部署。 1. **Maven安装** Maven是Java项目管理工具,负责构建、依赖管理和项目信息管理。在Linux环境下,Maven的安装步骤包括: - 从官网下载最新...
Jenkins、Maven、SVN和Tomcat是现代软件开发中常用的工具,它们可以组成一套完整的持续集成和部署系统。接下来,我将详细说明这些工具的安装、配置和使用知识。 首先,Jenkins是一个开源的持续集成工具,用于自动化...
### GitLab、Jenkins、Maven与Tomcat集成部署详解 #### 一、概述 本文档将详细介绍如何在Jenkins平台上实现Maven项目的自动化构建,并将其自动部署至Tomcat服务器的过程。通过集成GitLab作为源代码管理工具,利用...
jenkins自动化部署全套方案:包括tomcat、jdk、maven、git; 而且还包括jenkins所需插件(plugins.zip); 首次安装选择推荐插件时出现“: No such plugin: cloudbees-folder” 解决方案 1、下载附件资源:cloudbees-...
### Jenkins、Maven与Git在...至此,已经完成了Jenkins、Maven与Git持续集成所需的基础环境搭建工作。接下来可以进一步配置Jenkins服务器,使其能够与Git仓库以及Maven项目集成,实现自动化构建、测试和部署等功能。
本资源"java+maven+tomcat+jenkins打包安装.7z"提供了一站式的解决方案,帮助用户快速、便捷地在自己的环境中搭建完整的Java开发、构建、部署和持续集成环境。 首先,Java是全球广泛使用的开源编程语言,尤其适用于...
《Jenkins、Maven与Tomcat的集成应用详解》 在现代软件开发环境中,持续集成(Continuous Integration,简称CI)和持续部署(Continuous Deployment,简称CD)已经成为不可或缺的一部分。Jenkins作为一款开源的CI/...
### Jenkins 实现 Maven 项目自动部署到 Tomcat 在当今快速发展的软件开发环境中,持续集成(CI)与持续部署(CD)已经成为不可或缺的部分。本文将详细介绍如何利用 Jenkins 实现 Maven 项目的自动部署到 Tomcat ...
总结来说,Jenkins环境部署涉及JDK 11、Tomcat 9和Jenkins的安装与配置,其中JDK提供运行环境,Tomcat作为应用服务器承载Jenkins服务,而Jenkins自身则负责集成自动化流程。正确配置这三个组件,能为开发团队提供一...
- **Jenkins与Maven**: 通常,Jenkins和Maven会安装在同一台机器上,而Tomcat可以单独部署在另一台机器上,但需确保与Jenkins不在同一个Tomcat实例中。Jenkins支持Master-Slave架构,Slave节点可以分担Master的工作...