天天看點

Jenkins:基于linux建構ivy項目

Jenkins:基于linux建構ivy項目并釋出到resin (二)

基于以上《Jenkins:VMware虛拟機Linux系統的詳細安裝和使用教程(一)》的配置再進行對ivy項目建構:

  1. 啟動tomcat:sh startup.sh ,在浏覽器通路jenkins:https://linuxIP/jenkins
  2. 點選:“系統管理”-“插件管理”,安裝插件:ivy Plugin和ant Plugiin,安裝成功重新開機
  3. Linux安裝ivy:wget 下載下傳apache-ivy-2.4.0-bin.tar.gz(版本随意),解壓放在/usr/ivy/apache-ivy-2.4.0,配置環境變量
  4. Linux安裝ant :apt-get install ant(安裝不成功,可能要先更新,指令:sudo dpkg --configure -a)

  或者用yum install ant安裝,安裝成功之後找到ant的安裝目錄,指令:which ant ,我的運作目錄是/usr/bin/ant ,配置linux環 境變量,vi /ect/profile ,完成後驗證:ant -version

  

Jenkins:基于linux建構ivy項目

  5.linux安裝resin:解壓

  6./在jenkins界面配置ant:“系統管理”-“全局工具配置”:如圖,ANT_HOME填寫ant在linux的安 裝目錄,就是上一步的目錄,會報錯,不必理會,直接儲存。

   

Jenkins:基于linux建構ivy項目

   5.添加ivy的svn的Credentials:jenkins界面-“Credentials”-“System”, 如下圖,Username、 Password為ivy項目svn的賬号和密碼。

Jenkins:基于linux建構ivy項目

  6.在jenkins建立一個item:

Jenkins:基于linux建構ivy項目

  7.配置如圖:

Jenkins:基于linux建構ivy項目

  Credentials就直接選擇已經建立的credentials:

Jenkins:基于linux建構ivy項目
Jenkins:基于linux建構ivy項目
Jenkins:基于linux建構ivy項目

   8.完成,儲存。

  9.在jenkins進行build,首先會把所有檔案check out 到/root/.jenkins/workspace/ivyPro,然後會根據項目中的build.xml進行打包

     

Jenkins:基于linux建構ivy項目

  對項目進行build, build的時候看控制台的資訊,不出什麼意外的話會報錯,原因是check out下來的build.xml不是針對本地而寫的,是以進入

  linux:/root/.jenkins/workspace/項目名/build.xml ,對build.xml針對本地進行重寫。demo如下面:

  build.xml:

<?xml version="1.0" encoding="UTF-8" ?> 
<project name="business" default="deleteWar" basedir="." xmlns:ivy="antlib:org.apache.ivy.ant">  
    <property name="build" value="${basedir}/build" />  
    <property name="src" value="${basedir}/src" />  
    <property name="WebContent" value="${basedir}/WebContent" />
    <property name="webinf" value="${WebContent}/WEB-INF" />
    <property name="weblib" value="${webinf}/lib" />
    <property name="webclasses" value="${webinf}/classes" />
    <property name="webConfig" value="${src}/config" />
    <!--請将下面的路徑改為你本地的路徑-->  
    <property name="tomcat.home" value="/usr/tomcat/tomcat-80" />
    <property name="jdk" value="/usr/java/jdk" />
    <property name="resin" value="/usr/resin/resin" />
    <property name="webserver" value="/usr/tomcat/tomcat-80/webapps" />  
    <property name="ivy.local.default.root" location="/root/.jenkins/workspace/IVY_LIB" /> 

    <!--定義CLASSPACH,編譯時用到你外部加入的包-->
    <path id="classpath">
        <pathelement location="${src}" />
        <fileset dir="${jdk}/lib" includes="***.jar" />
        <fileset dir="${tomcat.home}/lib">
            <include name="*.jar" />
        </fileset>
    <fileset dir="${weblib}" includes="***.jar" />
    <fileset dir="${resin}/lib" includes="***.jar" />
    </path>

    <!--ivy的resolve-->  
    <target name="resolve">
        <echo message="ivy的resolve" />
       <!-- id=ivy.instance 配置本地倉庫,不設定預設為網絡上的倉庫-->
	   <ivy:settings id="ivy.instance" file="${ivy.local.default.root}/ivysettings.xml" />
   	   <ivy:retrieve  pattern="${weblib}/[artifact].[ext]" /> 	 
    </target>

      <!--清空檔案-->  
    <target name="clean" description="删除任務" depends="resolve">  
        <echo message="删除任務" />
        <delete dir="${build}" />
        <delete dir="${webclasses}" /> 
    </target>   
  
    <!--建立一個臨時目錄-->  
    <target name="init" description="建立檔案夾" depends="clean">  
        <echo message="建立" />
        <mkdir dir="${build}" />
        <mkdir dir="${build}/WEB-INF/classes" />
        <mkdir dir="${webclasses}" />
    </target>

    <!--建構配置檔案的目錄-->  
    <target name="config" description="複制配置檔案" depends="init">  
        <echo message="複制配置檔案" />
        <copy todir="${build}/WEB-INF/classes">
            <fileset dir="${src}">
                <exclude name="com/**" />
            </fileset>
        </copy>
    </target>  
    
    <!--編譯java檔案-->  
     <target name="compile" description="編譯檔案" depends="config">  
        <echo message="編譯檔案" />  
        <javac fork="true" executable="${jdk}/bin/javac"  srcdir="${src}" destdir="${webclasses}">  
            <classpath refid="classpath" />  
            <compilerarg line="-encoding utf-8 " />  
        </javac>  
    </target>
  
   
    <!--打成WAR包-->  
    <target name="generwar" depends="compile">  
        <echo message="打成WAR" />  
        <war destfile="${build}/${ant.project.name}.war" webxml="${webinf}/web.xml">
             <!-- 将非jar和非class檔案拷貝到war包的對應路徑下。 -->  
             <fileset dir="${WebContent}">  
                <include name="**/**" />
                <exclude name="**/*.jar"/>  
                <exclude name="**/*.class"/>  
            </fileset>
            <!-- 将建構的配置檔案目錄拷貝,路徑對應 --> 
            <fileset dir="${build}">  
                <include name="WEB-INF/**" />
            </fileset>
            <!-- 加lib包 --> 
            <lib dir="${weblib}" />
            <!-- 加編譯過的檔案 --> 
            <classes dir="${webclasses}" />
        </war>  
    </target>
  
    <!--把WAR放到一個指定目錄,這裡是直接布署到TOMCAT伺服器-->  
    <target name="fabu" depends="generwar" description="釋出">  
        <copy file="${build}/${ant.project.name}.war" todir="${webserver}">  
        </copy>  
    </target>
  
    <!--把打好的WAR删除-->  
    <target name="deleteWar" depends="fabu" description="删除伺服器上的war">  
        <delete file="${build}/${ant.project.name}.war" />  
    </target>  
</project>        

  9.build成功的界面:

Jenkins:基于linux建構ivy項目

    

 build.xml,被其他項目打依賴包

 build.xml格式如下:

<project name="Declares" default="${client.jar}" basedir=".">

        <property name="build.dir" value="WebContent/WEB-INF/classes/" />  <!-- 項目需要打包的目錄 -->

        <property name="dist.dir" value="/Users/xue/project/WebContent/WEB-INF/lib" /> <!-- 打包到哪裡 -->

        <property name="client.jar" value="ivyPro-jenkins-1.0.0.jar" /> <!-- 包的名稱 -->

        <target name="prepare">

                <mkdir dir="${dist.dir}" />

                <delete>

                        <fileset dir="${dist.dir}">

                                <include name="${dist.jar}" />

                        </fileset>

                </delete>

        </target>

        <target name="${client.jar}" depends="prepare">

                <jar jarfile="${dist.dir}/${client.jar}">

                        <fileset dir="${build.dir}">     

         <!-- 要打包的地方,格式如下,如果目錄下面還有目錄,後面加多個* -->

                                <include name="com/pakege/hello/bean/*" />

                                <include name="com/pakege/hello/config/*" />                              

                </jar>

然後會在Users/xue/project/WebContent/WEB-INF/lib目錄下有個ivyPro-jenkins-1.0.0.jar包。