也许是目前最好的Jenkins部署指南

xiaoxiao2021-02-28  5

      通过标题能看出我是锤子的粉丝,哈哈哈,本人确实是一名锤粉,看过锤子历届的发布会,买过我锤发布的每一款手机产品。不管我锤以后是一小撮人用,还是后面烂大街的人用,我都为这家企业的情怀买单。

        好了,言归正传。很久之前,看到项目组打包,部署测试环境的确是一个重复劳动,费时又费力的过程。几个人同时开发一个项目,修改或新增的类很多,导致只能对项目打全量包。打包的过程是固定的,机械的活动:

            1 ) 将代码从版本控制工具上更新到本地(我们用的是SVN);

            2)将项目所依赖的jar包从公司的maven私服上面下载下来;

            3)使用maven将项目打成war包;

            4)备份测试环境服务器webapps下的项目文件;

            5)再将打好的war包上传到测试环境服务器webapps下;

        平时项目组开发,要打包到测试环境的过程就是这样的。整个过程非常乏味,因公司内网带宽有限制,从公司maven私服上下载下来jar的时候非常慢,所以导致整个过程耗时也是非常长的。这种情况存在已经有一段时间了,后来我在无意中看到jenkins,决定通过搭建jenkins的持续集成实现自动打包,发布来简化这个机械,乏味的手动打包、发布的过程。

            具体步骤如下:

                  一、Jenkins部署

                  二、安装需要的jenkins插件

                  三、配置jenkins

            

            一、Jenkins部署 

                   使用jenkins部署前,需要安装一些必要的环境

                   1)、jdk

                   2)、maven

                   3)、tomcat

                  如果是 jdk是1.7的版本的话,jenkins的部署可以参考这篇:

                          https://www.cnblogs.com/hdwang/p/6081994.html  但其中有些插件已与jenkins的版本不兼容,

                         (如果是1.7版本的话,可以下载高一点版本的jenkisn.war)

需要手动下载能兼容版本的插件

                  手动安装插件见这篇:

                          http://www.mamicode.com/info-detail-1794758.html              

                        jenkins安装过程,参考上述博文即可,在此不做详述。如安装过程遇到以下错误:

                                 1、启动过程如果日志文件中报错如下图:  (原因是 jenkins 版本和 jdk版本不配,升级jenkins版本或者jdk版本即可)    

              

                                      2、如果日志文件中报错如下图:  ( 原因是tomcat目录下缺少 temp 文件夹,在tomcat目录下建立temp文件夹,重新启动即可)

                                    详情见:  https://stackoverflow.com/questions/41679543/jenkins-installation-on-tomcat-giving-hudson-util-notempdir-java-io-ioexception

                

                     安装所需要的jenkins插件:

                             安装过程中安装了建议的插件,为了能实现自动部署还需安装以下插件:

                             1 ) Subversion / Git ( 版本控制工具,用来获取项目源码)

                             2 ) SSH plugin    ( 通过SSH协议连接不同主机,用来执行脚本命令,如:备份 )

                             3 ) Deploy to container Plugin   (发布war包到容器)

                配置jenkins:

                        开始配置jenkins自动部署前,需要准备一些关于tomcat的配置:

                        1 ) tomcat 的 webapps 文件夹下 的manager目录 一定的有(如果没有的 重新下载一个tomcat软件,复制其中的manager文件夹即可)

                   

                           2)编辑 tomcat conf 下的 tomcat-users.xml 文件,添加相应的角色,账号,以及为账号赋予相应的权限。(后续jenkins推送war包到tomcat webapps下的时候,需要这个账号以及权限)

编辑如下:   

        

 <role rolename="admin-gui"/>

  <role rolename="manager"/>

  <role rolename="manager-gui"/>

  <role rolename="manager-jmx"/>

<role rolename="manager-script"/>

  <role rolename="manager-status"/>

 

<!--  <user name="tomcat" password="tomcat" roles="manager-gui,manageri,manager-jmx,admin-gui" />-->

<user name="admin" password="admin!@#" roles="manager-gui,manager,manager-jmx,admin-gui,manager-script,manager-status" />

               

                3 ) 修改完 tomcat-users.xml 后,需要重启tomcat才能生效,可以在浏览器上做以下验证:

                          

 如果出现下图,则说明账号权限验证通过:

         

                关于权限问题,如果按照上述配置了访问  http://ip:port/manager/text/list 还是 403的话,就需要修改tomcat/webapp/manager/META-INF  

注释掉以下信息:

        重启再验证。如果还是 403 的话,看 tomcat/conf/Catalina/localhost是否有下图所示四个文件:

     如果有,将四个文件中的以下信息都注释掉:

重启,再验证即可。

 关于 403这个问题,可以看下这篇博文(基本总结了各类403问题):

http://blog.csdn.net/staticabc/article/details/79255790

    

          整个配置过程非常清晰:( 如图 ) 

                

                    

                分为以下几个模块:

                        General  :   项目构建的一些通用配置。

                        源码管理:  配置版本管理工具,代码仓库的地址以及账号密码。

                        构建触发器: 配置一些特定情况下触发构建。(比如一天构建一次 等)

                        构建环境 :  配置一些执行脚本。(比如说  构建前先备份)

                       构建 : 配置 maven 的 操作 命令,也可以配置执行脚本(但是只能执行jenkins部署本机的脚本)

                         构建后的操作:配置一些在打包成功之后的操作,常见的有 部署(Deploy war to a container),发邮件通知呀..... 等等。

                        1、General :

                

                2、 源码管理 :(选择版本控制工具 SVN/Git,输入仓库地址,以及SVN账号和密码)如下图:

        添加SVN账号和密码:

    

 

            输入SVN仓库地址,选择刚添加的SVN账号和密码:

               其中 Check-out Strategy 选择的是 每次打包都从SVN上获取最新代码。

               3、构建触发器(可以通过 Build periodically 这个配置成 周期性构建)

                           

                    

                4、构建环境:

                

             因我构建的应用和 jenkins部署的机器 不在同一台机器,所以执行备份脚本的时候需要配置SSH:(保存刚刚的配置,进入到首页——>配置)

         配置构建的项目所在机器的SSH信息:

            继续配置执行备份脚本:

        

            5、构建: 配置mavne打包命令

        

           6、构建后操作 : ( 配置发布到tomcat 容器的相关信息 )

        

              

                      

PS : 上图中的 Credentials 账号 和密码 就是  我们前面 写在 tomcat-users.xml文件中的账号和密码。      

WAR/EAR files 这个文件的目录是 相对目录,相对于 target目录。(target目录是 在 jenkins的workspace的当前项目名称下)   

  

配置完之后 构建即可:

        查看Console Output,能看到jenkins在执行的操作,按照我们的配置,顺序应该是这样的: 从SVN检出代码——》备份——》打包——》发布到tomcat中。出现下图的结果,即代表发布到tomcat容器成功了。

            

            本来部署jenkins自动打包是为了主要项目搭建的,然后搭建完全后,其它不常用的项目通过配置都可以自动部署了,唯独主项目打包不成功,因组内也一直在负责新迭代,在找了一段时间,没找到解决办法后,这个问题就暂停了一段时间。后面有个版本完成需求后,空闲时间比较多,于是继续排查这个问题,这次终于找到原因了。如下:

        项目打包一直报这个错:

                程序包com.sun.image.codec.jpeg不存在

        解决方案:

                 报这个错误的原因是,Maven没有权限操作jre自带的jar包。

                 找到rt.jar和jce.jar上传到nexus的3rd party仓库,在pox.xml中引入依赖

                 详情见博文:

                        http://blog.csdn.net/gisredevelopment/article/details/29223139

                         https://my.oschina.net/ydsakyclguozi/blog/212917

看了下时间,这个问题知道解决,竟有两、三个月之久,最终还是得到了解决了。

        最近这段时间,因公司测试环境需要迁移到新服务器上,重新部署了jenkins,关于jenkins部署的文章网上很多,我写这篇文章就是为了记录下自己在部署,配置过程遇到的一些问题,顺便分享下,如果你恰巧遇也到了这些问题,看到这篇文章能很快解决。

       

             后记:

      迁移jenkins的时候,在原机器上做了个测试,无意之间发现,项目组在三年前就曾引入了jenkins,查看构建记录,构建了40 多次,从没构建成功过。估计是因此放弃了。想想也是挺有趣的,事隔三年,我又无意部署了Jenkins,哈哈哈。遂截图留念:

参考链接:

       1)    用户权限的配置  tomcat-user.xml            conf/Catalina目录的权限        webapps/manger/META-INF/context.xml        http://blog.csdn.net/staticabc/article/details/79255790                2) jenkins配置 SSH服务器 (执行脚本命令)       http://blog.csdn.net/liujingqiu/article/details/58584559                3) 报这个错误的原因是,Maven没有权限操作jre自带的jar包。       maven 程序包com.sun.image.codec.jpeg不存在的解决方案       找到rt.jar和jce.jar上传到nexus的3rd party仓库,在pox.xml中引入依赖       http://blog.csdn.net/gisredevelopment/article/details/29223139       https://my.oschina.net/ydsakyclguozi/blog/212917    4) 手动安装插件—————http://www.mamicode.com/info-detail-1794758.html      5) war包路径说明————http://blog.csdn.net/tragedyxd/article/details/51852276

        

            

                        

                  

                     

               

转载请注明原文地址: https://www.6miu.com/read-2596162.html

最新回复(0)