之前说过很长一段时间内,我使用jenkins仅仅是涉及两个地方:配置svn版本,点击立即构建。

所以一直特别好奇jenkins的各个插件究竟是怎么工作的。然后最近研究了一下我这边用上的几个插件,虽然不够透彻,但好歹对jenkins的构建过程有了一定程度的了解^_^

  1. Ant

    jenkins是如何利用ant编译程序并打成war包的呢?ant是基于build.xml工作的。所以我研究了一下build.xml的具体内容:

【可参考http://www.cnblogs.com/xionghui/archive/2012/03/13/2393679.html,博主写的非常详细】



 
 


    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
      
    
    
    
    
    
       
    
    
        
    
        
        
            
        
        
            
        
        
            
        
    
    
    
    
        
        
        
        
    
   
    
            
        
            
        
        
            
        
    
  
    
    
        
                
        
        
              
    
    
        
                
        
        
        
      
    

2.svn

 jenkins安装的时候默认安装了svn插件。

配置项目的时候,源码管理选择"Subversion"

 Repository URL填入源码的svn路径,可以在路径后面加上@版本号,如@1251jenkins则会从 svndownload1251版本的代码


3.deploy

  将war包远程到服务器上。

  那么问题来了,jenkins是如何得知war包将放到什么位置呢?

  还记得在“jenkins部署java项目之小白的笔记”配置deploy环节吗,当时我配置的Tomcat URL=http://localhost:8080,因为localhost:8080是本地的指向本地tomcat,所以war包将发送到

${env.CATALINA_HOME}/webapps

   在此之前我所操作的步骤都是基于本地,但实际上java项目一般都是放到linux机器来运行,那么

 接下来说说deploy插件将war远程到linux机器上。

   因为8080是tomcat的默认端口,所以一般对于基于tomcat运行的项目会另外配置一个端口号,具体 

  步骤如下:

  (1)在apach目录下新建一个文件夹,以项目名称命名[当然文件夹路径和项目名称也可以按个

       人喜好自取]

     cd apache-tomcat
     mkdir MyFirstJob

  (2)在项目文件下新建三个文件夹,并将tomcat的相应内容copy过来  

     cd MyFirstJob 
     mkdir conf
     mkdir webapps
     mkdir temp
     
     cp -r /home/tomcat/apache-tomcat/conf/server.xml /home/tomcat/apache-tomcat/testJob/conf/
     cp -r /home/tomcat/apache-tomcat/conf/tomcat-users.xml /home/tomcat/apache-tomcat/testJob/conf/
     cp -r /home/tomcat/apache-tomcat/conf/web.xml /home/tomcat/apache-tomcat/testJob/conf/
     cp -r /home/tomcat/apache-tomcat/webapps/manager /home/tomcat/apache-tomcat/testJob/webapps

  (3)对server.xml及tomcat-user.xml,context.xml进行编辑,使用vi命令,此处不再一一赘述,仅给出最后范本

      cat server.xml

    
        
    
    
        
        
        
            
                
            
            
            
            
                
            
        
    
      cat tomcat-user.xml

   
   
   

    修改server.xml,主要是为了设置端口号及配置deploy属性,该文件中的变量值都是从启动项目的可执行文件中获取的,即我在第(4)步将中提到的MyFirstJob-startup.sh

    修改tomcat-user.xml前面也提到过,因为jenkins在配置deploy是需要填写的用户名和密码即来自该处

    context.xml是配置数据库连接,此处就不提供详细内容了~

  (4)新建编辑启动项目的可执行文件MyFirstJob-startup.sh,它的作用同同${env.CATALINA_HOME}/bin/startup.bat。我在本地部署项目的时候,上面提到jenkins会将war包打到${env.CATALINA_HOME}/webapps,之后双击${env.CATALINA_HOME}/bin/startup.bat,tomcat会自动解压war包并启动项目,因为项目现在需要部署在linux机器上,同样需要.sh一个可执行文件来启动项目

cd conf
vi MyFirstJob-startup.sh
#!/bin/sh
export CATALINA_HOME=$CATALINA_HOME7
export TOMCAT_HOME=$TOMCAT_HOME7
export
CATALINA_OPTS="-agentpath:/home/tomcat/soft/jprofiler8/bin/linux-x64/libjprofilerti.so=port=8849,nowait
-Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=8888
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
-Djava.rmi.server.hostname=192.168.xx.xx -Dtomcat.server.port=7001
-Dtomcat.http.port=8001 -Dtomcat.ajp.port=9001 -Dtomcat.instance.name=MyFirstJob
-Xms8192m -Xmx8192m -XX:PermSize=1024m -XX:MaxPermSize=2048m
-XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+UseParNewGC"
export CATALINA_OUT="/home/tomcat/apache-tomcat/MyFirstJob/logs/Catalina/catalina.$(date
+'%Y-%m-%d').out"
export CATALINA_PID="/home/tomcat/apache-tomcat/tomcat-MyFirstJob.pid"
export CATALINA_BASE="/home/tomcat/apache-tomcat/MyFirstJob"
export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$TOMCAT_HOME/lib:/usr/local/apr/lib:/usr/local/apr
rm -rf /home/tomcat/apache-tomcat/MyFirstJob/work
/home/tomcat/apache-tomcat/bin/catalina.sh start
exit $?

ps:端口号可自行更换

再将MyFirstJob-startup.sh变成一个可执行文件,之后可以看到文件变成粗体,ll命令也可以看到权限改变。

 chmod a+x MyFirstJob-startup.sh 
 ll conf

-rwxrwxr-x 1 tomcat tomcat   1072 Apr  9 15:10 MyFirstJob-startup.sh
-rw------- 1 tomcat tomcat   6466 Apr  9 12:05 server.xml
-rw------- 1 tomcat tomcat   1530 Apr  9 12:05 tomcat-users.xml
-rw------- 1 tomcat tomcat 162905 Apr  9 12:06 web.xml

安装过tomcat的童鞋都知道tomcat由startup.bat启动,由shutdown.bat停止

vi MyFirstJob-shutdown.sh
#!/bin/sh
export JAVA_OPTS="-Dtomcat.server.port=7001"
export CATALINA_HOME=$CATALINA_HOME7
export TOMCAT_HOME=$TOMCAT_HOME7
export CATALINA_PID="/home/tomcat/apache-tomcat/tomcat-MyFirstJob.pid"
export CATALINA_BASE="/home/tomcat/apache-tomcat/MyFirstJob"
/home/tomcat/apache-tomcat/bin/catalina.sh stop 0 -force
exit $?

现在执行

./MyFirstJob-startup.sh

可以试着访问http://192.168.xx.xxx:8001,如果没有问题的话是可以访问的,虽然返回的是一个空白网页,然后可以访问http://192.168.xx.xxx:8001/manager,用户名和密码就是tomcat-user.xml配置的,也就是deploy中需要配置的用户名密码,在返回的页面上也可以看见deploy功能,至此,我也终于明白了jekins的deploy插件是如何工作的。其实原理和manager下面提供的这个deploy功能一样,只是jenkins通过deploy的插件去访问http://192.168.xx.xxx:8001,然后根据MyFirstJob-startup.sh获得项目指向路径,将war包发送到相应路径

CATALINA_BASE="/home/tomcat/apache-tomcat/MyFirstJob