jenkins之利用Git和Ant插件打war包并自动部署到tomcat

2022-03-15 17:12:55 浏览数 (1)

Jenkins是一个持续集成平台,它能够从git等源码管理服务器拉取代码、打包并发布到tomcat等中间件; 只要配置好相关插件,就可以做到项目的自动化构建、部署,不论是对开发来说监控代码质量,还是对测试来说进行自动化部署,都有很大的帮助

环境准备:一台CentOS虚拟机、一个Git服务器(有条件的话用公司的git服务器,没条件的用码云也可以)

初次启动jenkins,输入给定密码后登录失败问题解决

首先到jenkins官网下载一个war包

然后下载一个linux版的tomcat并将tomcat解压到虚拟机中的一个文件夹

最后把jenkins.war放到tomcat中并启动tomcat(这个tomcat只用来部署jenkins)。

具体部署步骤不说了,因为安装jenkins网上有太多教程了,大致就那个套路

这里只说下需要注意的一点:

首次登陆jenkins会提示输入“Administrator password”

这个密码可以在2个地方找到:

一是tomcat控制台,也就是打出的日志;

二是根据页面提示,找到密码文件(注意那个截图是在windows下安装jenkins截的,因为之前在linux部署时没截图,不过linux也会有这个路径提示的)

如果在输入这个密码后也登录不进去,可以按照如下方法解决:

把.jenkins/config.xml这个文件的<authorizationStrategy>标签的class属性修改一下即可

代码语言:javascript复制
代码语言:javascript复制
1、<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
这个权限对应“任何用户可以做任何事(没有任何限制)
代码语言:javascript复制
2、<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"/>
这个权限对应“登录用户可以做任何事
代码语言:javascript复制
3、<authorizationStrategy class="hudson.security.GlobalMatrixAuthorizationStrategy">

    <permission>hudson.model.Hudson.Administer:test</permission>

    <permission>hudson.scm.SCM.Tag:test</permission>

  </authorizationStrategy>
这个权限对应 test用户可以是管理员、打标签权限

之前默认是第2个配置,改为第1个然后重启下jenkins就行了

登录成功后跳转到如下页面:

安装插件,配置JDK、Git、Ant

要确保jenkins上安装好Git plugin、GitHub plugin、AntPlugin插件,一般在启动jenkins时默认安装的插件中就包含这些了,没有的话再另安装就可以。

接下来是重点,jenkins打包要做2件事,一是从git服务器拉取项目源代码,二是利用Ant插件进行打包。

而这2个操作进行的前提是jenkins所在的宿主机已经安装了git和ant,当然还有JDK。

一:自行在Jenkins负载机中安装git、ant和JDK,并配置环境变量

二:Jenkins中配置git、ant和JDK

打开Jenkins主页面,依次点击【系统管理】-->【全局工具配置】

JDK、Git、Ant的配置分别如下

可以这样理解:当我们利用jenkins来进行自动化部署时,jenkins就是在模拟人的操作去到服务器调用相关的工具软件

而要使用这些工具,则必须要知道它们的路径

所以配置这些是为了让jenkins能够找到这些工具并使用(这也解释了为什么jenkins宿主机也要安装这些软件)

创建一个自由风格的项目(非maven),实现自动打war包

上一节把git和ant安装在虚拟机,并在jenkins上做了相关配置,接下来就可以真正开始构建一个项目了

1. 新建一个自由风格的项目,因为是用ant打包,所以不要选择构建maven项目

2. 配置源码管理

(1)Repository URL:因为是用git来管理项目源码,所以这个位置要填写该项目源码所在git服务器的地址(当然如果是用SVN来管理源码的,需要先安装SVN插件)

这里我填写的地址是https://gitee.com/Archer_Frost/HelloWorld.git,这是我在码云gitee.com上托管的一个练习项目HelloWorld,需要的小伙伴可以去码云copy一份

(2)Credentials:通俗来说就是认证方式,jenkins拉取代码时,服务器需要进行一次验证,这里需要事先配置一下,配置方法如下

在jenkins首页点击左侧菜单栏中【Credentials】,然后右侧会出现一个Credentials列表

然后目光移到下方 Stores scoped to Jenkins,点击global

然后再点击左侧【Add Credentials】,进入添加页面

Kind:下拉选择框,选择SSH Username with private key

Scope:按照默认就行

Username:可以随便填,是你为这个认证取的名字

Private Key:选择【Enter directly】,然后直接把私钥输入进来。这里的私钥其实是你在安装git为了把本地git仓库和远程git仓库(github或gitee)关联起来而创建的SSH KEY(不知道怎样生成的可以去看看git教程)

把id_rsa中的内容全部copy出来粘贴在这里就行(说是私钥,但是我试了下,使用id_rsa.pub也是可以的)

Passphrase:如果你在创建 ssh key 的时候输入了 Passphrase 那就填写相应的Passphrase,为空就不填写 (我这里就留空了,不过即使留空,如果建好后查看信息,还是会默认填上一串东西,我也不知道默认填写的是什么,不过没影响到拉取代码)

IDDescription可以不填

这样就创建好一个Credentials,然后在配置源码管理时就可以填写相应的Credentials了

(3)Branch Specifier (blank for 'any'):分支,需要拉取哪个分支的代码就填写对应的分支名称

3.构建

点击【增加构建步骤】,我这里选择的是Invoke Ant

Ant Version:选择你之前在全局工具配置中配置的Ant的Name

Targets:这个是指定ant要执行哪个任务,因为<target>在ant的构建文件(build.xml)中表示待执行的任务(这个需要自己了解下ant的工作原理)

4.构建后操作

其实截止到第三步,就已经可以成功打包了,构建后到工作空间中查看

为了可以项目首页显示打好的war包,还需要在构建后操作中做下相关配置

构建完成后,显示如下

到现在为止,可以看到,其实jenkins的配置并不是很多,重点是了解Ant是如何把一个java源文件打成war包的。

因为这次在学习jenkins时,手头上并没有一个java项目源码,再加上之前没有学习过java编程相关的知识,所以有一大部分时间花在去了解如何用ant打war包了,感觉这个也是蛮重要的,因为任何事物,只有了解了它的工作原理后才会更好地运用。

把war包远程部署到tomcat

1.先安装 Deploy to container Plugin插件

2. 在构建后操作中添加操作步骤

字面意思把war包放到一个容器中,可以把它理解为jenkins到war包的存放路径去拿打好的war包,然后把包放到目标容器

具体配置如下:

WAR/EAR files:填写war包在jenkins工作空间中的存放路径

作空间是指当前构建任务的工作空间,要把当前构建任务构建好的war包部署到目标服务器的tomcat中, 所以这里填写相对工作空间的路径即可,例如当前任务输出的war包如下

所以这里可以填写 output/*.war 也可以按照帮助提示按照如下方式写

Context path:一般填写包名即可,就是在部署好后访问系统时的路径(和tomcat热部署时的一个选项类似) 可以自己任意定义,这里填写的是“helloworld” 部署好后,可以访问如下url “http://192.168.57.129:8088/helloworld” 注意:context path填写的是什么,就可以在url后加上对应的后缀进行访问

Containers:先Add Container,选择一个tomcat,注意版本要和目标主机中安装的tomcat版本一致;

配置Containers之前,我们先要进行目标tomcat的tomcat-users.xml的配置

打开目标tomcat的tomcat-users.xml,在文件底部添加如下内容:

代码语言:javascript复制
<role rolename="manager-gui"/>
<role rolename="admin-gui"/>
<role rolename="manager-script"/>
<user username="hello" password="123456" roles="manager-gui,admin-gui,manager-script"/>

记住username 和 password

然后打开jenkins的 Credentials配置,添加一个认证账号;

添加的认证账号密码需要和tomcat-users.xml中定义的username 和 password一致,不然会导致认证失败,无法部署到目标tomcat;

多说一句,这个username 和 password其实就是设置的tomcat后台的Manager App的登录账号;

而一般进行tomcat热部署时,就是进入到Manager APP中进行(tomcat热部署方式:https://www.cnblogs.com/hanmk/p/8698182.html)

所以是不是可以这样理解,jenkins远程部署tomcat,也是获取目标tomcat的管理权限,进行热部署

最后在Credentials处选择刚刚创建的账号

在Tomcat URL处填写目标tomcat所在服务器地址(注意端口号不要填错) http://192.168.57.129:8088/

到此就全部配好了,点击【立即构建】看看效果;

以后每次开发提交代码后,只需点一下构建,即可看到修改效果,无需再手动部署了(当然也可以配置每隔一定时间自动去构建)

0 人点赞