Jenkins 平台部署发布你的maven项目

网友投稿 1116 2022-10-18

Jenkins 平台部署发布你的maven项目

Jenkins 平台部署发布你的maven项目

Jenkins相关概念

要熟练掌握Jenkins持续集成的配置、使用和管理,需要了解相关的概念,例如代码开发、编译、打包、构建等名称概念,常见的代码相关概念包括:JDK、JAVA、MAKE、ANT、MAVEN、Eclipse、Jenkins等。

Make编译工具

Make编译工具是Linux和Windows最原始的编译工具,在Linux下编译程序常用make,Windows下对应的工具为nmake。读取本地​​makefile​​文件,该文件决定了源文件之间的依赖关系,Make负责根据makefile文件去组织构建软件,负责指挥编译器如何编译,连接器如何连接,以及最后生成可用二进制的代码。

Ant编译工具

Make工具在编译比较复杂的工程使用起来不方便,语法很难理解,延伸出Ant工具。Ant工具属于Apache基金会软件成员之一,是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。

Ant构建文件是XML文件。每个构建文件定义一个唯一的项目(Project元素)。每个项目下可以定义很多目标元素,这些目标之间可以有依赖关系。

构建一个新的项目时,首先应该编写Ant构建文件。因为构建文件定义了构建过程,并为团队开发中每个人所使用。

Ant构建文件默认名为build.xml,也可以取其他的名字。只不过在运行的时候需把这个命名当作参数传给Ant。构建文件可以放在任何的位置,一般做法是放在项目顶层目录也即根目录,这样可以保持项目的简洁和清晰。

Maven编译工具

Maven工具是对ant工具的进一步改进,在make工具中,如果我们要编译某些源文件,首先要安装编译器等工具。有时候需要不同版本的编译器,在java的编译器需要不同的各种包的支持,如果把每个包都-下来,在makefile中进行配置制定,当需要的包非常多时,很难管理。

Maven与Ant类似,也是个构建(build)工具,它是如何调用各种不同的编译器连接器呢?使用Maven plugin (maven 插件),Maven​项目对象模型POM (Project Object Model),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。

POM是Maven项目中的文件,使用XML表示,名称为pom.xml。在Maven中,当构建Project的时候,不仅仅是一堆包含代码的文件。还包含pom.xml配置文件,该文件包括Project与开发者有关的、缺陷跟踪系统、组织与许可、项目的URL、项目依赖、以及其他配置。

在基于Maven构建编译时,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。

由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长。

Jenkins框架工具

Maven可以实现对软件代码进行编译、打包、测试,功能已经很强大了,那还需要Jenkins做什么呢?Maven可以控制编译,控制连接,可以生成各种报告,可以进行代码测试。

但是默认不能控制完整的流程? 没有顺序定义,是先编译还是先连接?先进行代码测试,还是先生成报告?可以使用脚本来对Maven进行控制,实现这些流程的控制。

Eclipse工具

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。Eclipse 附带了一个标准的插件集,包括Java开发工具(Java Development Kit,JDK),主要用于开发者开发网站代码。

下面来通过jenkins来发布一个maven项目

Jenkins平台设置

全局配置工具里面要配置两个部分,一个是JDK,一个是maven

Jenkins服务器安装Maven:和jdk一样无需编译,解压就好了

[root@localhost ~]# mkdir -p /usr/maven[root@localhost ~]# cd /usr/maven/[root@localhost maven]# lsapache-maven-3.3.9-bin.tar.gz[root@localhost maven]# tar xf apache-maven-3.3.9-bin.tar.gz [root@localhost maven]# lsapache-maven-3.3.9 apache-maven-3.3.9-bin.tar.gz#这样就部署好了,不要编译为二进制,不需要定义环境变量,直接解压就好了[root@localhost maven]# mv apache-maven-3.3.9/* .[root@localhost maven]# lsapache-maven-3.3.9 apache-maven-3.3.9-bin.tar.gz bin boot conf lib LICENSE NOTICE README.txt

配置一下你的JDK路径

Jenkins系统设置完毕,需创建job工程:Jenkins平台首页创建一个新任务填入Item名称 “构建一个maven项目” 单击OK,如图所示:

创建完JOB任务,需对其任务进行配置

单击​​javatest-​​工程名->配置->进入JOB工程详细配置->源码管理->选择Subversion配置SVN仓库地址,如果报错需要输入SVN用户名和密码,如图所示:

Jenkins配置SVN仓库地址

源码管理,SVN代码迁出参数详解如下:

Respository url 配置SVN仓库地址;Local module directory 存储SVN源码的路径;Ignore externals option 忽略额外参数;Check-out Strategy 代码检出策略;Repository browser 仓库浏览器,默认Auto;add more locations 源码管理,允许-多个地址的代码;Repository depth 获取SVN源码的目录深度,默认为infinity;empty: 不检出项目的任何文件,files: 所有文件,immediates:目录第一级,infinity:整个目录所有文件。

配置Maven编译参数,BuildàGoals and optionsà输入“clean install -Dmaven.test.skip=true”,此处为maven自动编译、打包并跳过单元测试选项,如图所示。

这句话表示maven使用该条命令对SVN的源代码进行编译,打包。

输入“clean install -Dmaven.test.skip=true”,此处为maven自动编译、打包并跳过单元测试选项,clean install可以实现编译和打包,后面是跳过单元测试。

Maven工具常用命令如下:

mvn clean 打包清理(删除target目录内容) mvn compile 编译项目mvn package 打包发布mvn package -Dmaven.test.skip=ture 打包时跳过测试。

mv /root/.jenkins/workspace/javatest-/target/edu.war /root/.jenkins/workspace/javatest-/target/ROOT.war\scp /root/.jenkins/workspace/javatest-/target/ROOT.war 192.168.179.101:/usr/local/tomcat/webapps

通过以上步骤的配置步骤,即完成了JOB工程的创建。

Jenkins构建JOB工程

Jenkins JOB工程创建完毕,如下直接运行构建,Jenkins将从SVN仓库获取SVN代码,然后通过Maven编译、打包,并最终生成可以使用的war包即可。操作步骤如下:

单击​​javatest-​​工程名,进入JOB工程详细配置界面,单击“立即构建”,如图所示:

Jenkins JOB工程配置界面

控制台输出Started by user adminBuilding in workspace /root/.jenkins/workspace/javatest-Updating svn://139.224.227.121:8801/edu/at revision '2020-10-30T10:16:35.406 +0800' --quietUsing sole credentials shareku1/****** in realm ‘ /data/svn/edu’At revision 325No changes for svn://139.224.227.121:8801/edu/since the previous build[javatest-] $ /bin/sh -xe /usr/local/tomcat/temp/jenkins1460502348888793463.shParsing POMsEstablished TCP socket on 40843[javatest-] $ /usr/java/jdk1.8.0_131/bin/java -cp /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven33-agent-1.13.jar:/usr/maven/boot/plexus-classworlds-2.5.2.jar:/usr/maven/conf/logging jenkins.maven3.agent.Maven33Main /usr/maven /usr/local/tomcat/webapps/ROOT/WEB-INF/lib/remoting-3.27.jar /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven33-interceptor-1.13.jar /root/.jenkins/plugins/maven-plugin/WEB-INF/lib/maven3-interceptor-commons-1.13.jar 40843<===[JENKINS REMOTING CAPACITY]===>channel startedExecuting Maven: -B -f /root/.jenkins/workspace/javatest-/pom.xml clean install -Dmaven.test.skip=true.............................................................................Waiting for Jenkins to finish collecting data[JENKINS] Archiving /root/.jenkins/workspace/javatest-/pom.xml to com.shareku/jfedu/0.0.1-SNAPSHOT/jfedu-0.0.1-SNAPSHOT.pom[JENKINS] Archiving /root/.jenkins/workspace/javatest-/target/edu.war to com.shareku/jfedu/0.0.1-SNAPSHOT/jfedu-0.0.1-SNAPSHOT.war[javatest-] $ /bin/sh -xe /usr/local/tomcat/temp/jenkins6296923386156076692.shchannel stopped+ mv /root/.jenkins/workspace/javatest-/target/edu.war /root/.jenkins/workspace/javatest-/target/ROOT.war+ scp /root/.jenkins/workspace/javatest-/target/ROOT.war 192.168.179.101:/usr/local/tomcat/webappsFinished: SUCCESS

控制台日志打印“Finished: SUCCESS”,则表示Jenkins持续集成构建完成,会在Jenkins服务器目录jfedu-工程名目录下生产网站可用的war文件,将该war包部署至其他服务器即可,war路径为:/root/.jenkins/workspace/javatest-/target/edu.war

至此,Jenkins持续集成平台自动构建软件完成,步骤生成了war包,通过shell实现自动将该war包部署至其他服务器。

来看看效果:

如果你要批量部署可以结合ansible工具

mv /root/.jenkins/workspace/javatest-/target/edu.war /root/.jenkins/workspace/javatest-/target/ROOT.waransible web -m shell -a "\cp -a /usr/local/tomcat/webapps/ROOT /data/backup/`date +%F`"ansible web -m shell -a "mkdir -p /data/backup/`date +%F`"ansible web -m copy -a "src=/root/.jenkins/workspace/javatest-/target/ROOT.war dest=/usr/local/tomcat/webapps/"

如果这里面内容太多,就写成一个脚本。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:bfmvc:模仿springmvc的轻量级web框架,适合学习和搭建小型web项目使用
下一篇:springboot如何获取yml文件的自定义参数
相关文章

 发表评论

暂时没有评论,来抢沙发吧~