Jenkins是一个持续集成平台,它能够从git等源码管理服务器拉取代码、打包并发布到tomcat等中间件;
只要配置好相关插件,就可以做到项目的自动化构建、部署,不论是对开发来说监控代码质量,还是对测试来说进行自动化部署,都有很大的帮助
环境准备:一台CentOS虚拟机、一个Git服务器(有条件的话用公司的git服务器,没条件的用码云也可以)
初次启动jenkins,输入给定密码后登录失败问题解决
二是根据页面提示,找到密码文件(注意那个截图是在windows下安装jenkins截的,因为之前在linux部署时没截图,不过linux也会有这个路径提示的)


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

1、<authorizationStrategy class="hudson.security.AuthorizationStrategy$Unsecured"/>
这个权限对应“任何用户可以做任何事(没有任何限制)
2、<authorizationStrategy class="hudson.security.FullControlOnceLoggedInAuthorizationStrategy"/>
这个权限对应“登录用户可以做任何事
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



创建一个自由风格的项目(非maven),实现自动打war包
上一节把git和ant安装在虚拟机,并在jenkins上做了相关配置,接下来就可以真正开始构建一个项目了


(1)Repository URL:因为是用git来管理项目源码,所以这个位置要填写该项目源码所在git服务器的地址(当然如果是用SVN来管理源码的,需要先安装SVN插件)
这里我填写的地址是https://gitee.com/Archer_Frost/HelloWorld.git,这是我在码云gitee.com上托管的一个练习项目HelloWorld,需要的小伙伴可以去码云copy一份
(2)Credentials:通俗来说就是认证方式,jenkins拉取代码时,服务器需要进行一次验证,这里需要事先配置一下,配置方法如下




Kind:下拉选择框,选择SSH Username with private key
Scope:按照默认就行
Username:可以随便填,是你为这个认证取的名字

把id_rsa中的内容全部copy出来粘贴在这里就行(说是私钥,但是我试了下,使用id_rsa.pub也是可以的)
Passphrase:如果你在创建 ssh key 的时候输入了 Passphrase 那就填写相应的Passphrase,为空就不填写 (我这里就留空了,不过即使留空,如果建好后查看信息,还是会默认填上一串东西,我也不知道默认填写的是什么,不过没影响到拉取代码)

这样就创建好一个Credentials,然后在配置源码管理时就可以填写相应的Credentials了
(3)Branch Specifier (blank for 'any'):分支,需要拉取哪个分支的代码就填写对应的分支名称
3.构建


Ant Version:选择你之前在全局工具配置中配置的Ant的Name
Targets:这个是指定ant要执行哪个任务,因为<target>在ant的构建文件(build.xml)中表示待执行的任务(这个需要自己了解下ant的工作原理)
4.构建后操作





到现在为止,可以看到,其实jenkins的配置并不是很多,重点是了解Ant是如何把一个java源文件打成war包的。
因为这次在学习jenkins时,手头上并没有一个java项目源码,再加上之前没有学习过java编程相关的知识,所以有一大部分时间花在去了解如何用ant打war包了,感觉这个也是蛮重要的,因为任何事物,只有了解了它的工作原理后才会更好地运用。
把war包远程部署到tomcat


具体配置如下:

WAR/EAR files:填写war包在jenkins工作空间中的存放路径
所以这里填写相对工作空间的路径即可,例如当前任务输出的war包如下

也可以按照帮助提示按照如下方式写

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

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

<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处选择刚刚创建的账号
http://192.168.57.129:8088/






