<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    高老莊

    八戒的夢想:農(nóng)婦,山泉,有點(diǎn)田
    posts - 4, comments - 14, trackbacks - 0, articles - 3
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    hudson step by step

    Posted on 2010-01-25 18:58 高老莊 閱讀(757) 評(píng)論(0)  編輯  收藏 所屬分類: CI
        hudson是開源社區(qū)用的較多的一個(gè)開源持續(xù)集成工具,因?yàn)槠溟_源,使用方便,擴(kuò)展性強(qiáng),對(duì)既有構(gòu)建系統(tǒng)耦合性低,受到了大家一致的好評(píng).
        使用:
        1.下載 
            hudson的官方網(wǎng)站https://hudson.dev.java.net/下提供了下載
        2.安裝
            hudson以war包的方式提供,因此安裝方式極其簡單,直接放到服務(wù)器的相應(yīng)目錄下,這里放到tomcat的webapp下,啟動(dòng)后,訪問http://localhost:8088/hudson 可以進(jìn)入hudson的控制臺(tái)頁面.
          
        4.組織待構(gòu)建的項(xiàng)目
            這里我們創(chuàng)建一個(gè)最為簡單的任務(wù).這個(gè)任務(wù)的目的是構(gòu)建一個(gè)標(biāo)準(zhǔn)的java工程,將其中的源碼編譯,打包等.
            回顧下一般的、最為簡單的開發(fā)流程:開發(fā)人員開發(fā)代碼,然后利用諸如ant,mvn等負(fù)責(zé)構(gòu)建系統(tǒng),然后執(zhí)行測試,最后發(fā)布到服務(wù)器上.通常,每個(gè)項(xiàng)目都會(huì)有一個(gè)完整的腳本來自動(dòng)化的做這件事,如何驅(qū)動(dòng)自動(dòng)化腳本的執(zhí)行(什么時(shí)間點(diǎn),以什么頻率,管理構(gòu)建結(jié)果),是hudson提供給我們的功能,hudson不關(guān)注特定一次構(gòu)建的內(nèi)部過程,這對(duì)hudson是透明的.目前,hudson通過插件的方式,提供了對(duì)基于ant 、mvn等常見構(gòu)建工具的支持.本質(zhì)上,hudson是一個(gè)任務(wù)管理和驅(qū)動(dòng)執(zhí)行工具,只不過,它驅(qū)動(dòng)的軟件開發(fā)流程中的構(gòu)建等過程.
            準(zhǔn)備:解決我們特定一次構(gòu)建中,做什么的問題.
            基于測試的目的,我們創(chuàng)建一個(gè)示例java工程,結(jié)構(gòu)如下:
        
        此項(xiàng)目的采用ant,構(gòu)建,ant腳本如下:
        
    <?xml version="1.0" encoding="UTF-8"?>
    <project basedir="." name="build.hudsondemo">
        
    <!-- ================================= 
              target: compile              
             ================================= 
    -->
        
    <target name="compile" depends="prepare" description="compile the project to the bin">
            
    <javac debug="true" destdir="${basedir}/bin">
                
    <src path="${basedir}/src" />
                
    <src path="${basedir}/test"  />
                
    <classpath>
                    
    <fileset dir="${basedir}/lib">
                        
    <include name="*.jar"/>    
                    
    </fileset>
                
    </classpath>
            
    </javac>
        
    </target>
        
        
    <!-- ================================= 
              target: jar              
             ================================= 
    -->
        
    <target name="jar" depends="compile" description="jar the project">
            
    <mkdir dir="${basedir}/target"/>
            
    <jar  destfile="${basedir}/target/hudsondemo_${common.version}.jar">
                
    <fileset dir="${basedir}/bin" />
            
    </jar>
        
    </target>
        
        
    <!-- ================================= 
              target: prepare              
             ================================= 
    -->
        
    <target name="prepare" depends="clean"  description="prepare the jar to the lib">
            
    <copy todir="${basedir}/lib">
                
    <fileset dir="${common.libs.dir}">
                    
    <include name="*.jar"/>
                
    </fileset>
            
    </copy>
        
    </target>
        
        
    <!-- ================================= 
                  target: prepare              
                 ================================= 
    -->
        
    <target name="clean">
            
    <delete dir="${basedir}/bin"></delete>
            
    <delete dir="${basedir}/lib"></delete>
            
            
    <mkdir dir="${basedir}/bin" />
            
    <mkdir dir="${basedir}/lib" />
        
    </target>
    </project>

        為了說明問題,我特意的設(shè)定兩個(gè)構(gòu)建時(shí)參數(shù):
        common.libs.dir 指出從什么位置獲取編譯項(xiàng)目所需要的jar
        common.version 指出構(gòu)建的jar的版本號(hào).

        5.配置hudson的通用配置
            根據(jù)使用插件的多少,通用配置數(shù)量同,對(duì)上述的示例項(xiàng)目,我們需要配置 ant 和jdk(可選,如果需要指定用特定的jdk構(gòu)建系統(tǒng)的話).
            點(diǎn)擊hudson主頁面右上角的manger hudson,進(jìn)入配置頁面,有多項(xiàng)配置可以處理,但是目前僅僅需要用到System configurate 功能.在System configurate頁面,可以如下的配置:

        
        貼此圖的目的是需要關(guān)注下home directory這個(gè)配置,默認(rèn)是當(dāng)前用戶目錄下的.hudson,可以更改,一般在環(huán)境變量中設(shè)定一個(gè)HUSDON_HOME即可,同時(shí)將原有目錄下文件copy到新目錄下,重啟hudson即可.也可以用其他的方式,比如設(shè)定容器參數(shù)等來指定.
        上述配置取默認(rèn)既可.
        
        配置jdk:
        
        
        配置ant:
        
        
         
       6. 創(chuàng)建構(gòu)建任務(wù)
            hudson能提供的功能都以任務(wù)存在.點(diǎn)擊右上角的new job,將構(gòu)建一個(gè)新的任務(wù):
        
        輸入任務(wù)名稱,并選擇第二項(xiàng).

        配置任務(wù):解決如何安排構(gòu)建任務(wù)的執(zhí)行的問題.
        首先,我們需要指定如何保留構(gòu)建歷史,一種是基于時(shí)間的,保留多少天,一種是基于次數(shù)的,保留自當(dāng)前開始多少次以內(nèi)的.這里我們選擇保留最新3次構(gòu)建.
        
        再次,我們需要指定利用什么版本ant執(zhí)行構(gòu)建,同時(shí)指定構(gòu)建時(shí)參數(shù).
        
        ant version 版本中,使用了在通用配置部分配置的ant.
        targets 中,指明了,每次構(gòu)建時(shí)需要完成的target,可以指定多個(gè)target.
        build file 指明了,使用什么樣的ant完成實(shí)際的構(gòu)建過程.
        properties 指明了ant腳本中的使用的運(yùn)行時(shí)參數(shù).這些參數(shù)可以使用變量替換,hudson 會(huì)解析出實(shí)際的值再傳給ant.

        這就是這個(gè)任務(wù)可以執(zhí)行的最基本配置,保存,并點(diǎn)擊右上角的build new ,可以立即執(zhí)行一個(gè)構(gòu)建.構(gòu)建結(jié)果如下:
        
        紅色表示失敗構(gòu)建,如果失敗,可以在%HUDSON_HOME%\jobs\下查看對(duì)應(yīng)任務(wù)構(gòu)建的日志來排查問題.
        
        8. 兩個(gè)可能經(jīng)常需要關(guān)注的配置.
        1.每個(gè)job的 workspace.
            
            如果不指定絕對(duì)路徑,配置的ant等腳本就是相對(duì)這個(gè)工作空間的.在上面的例子中工作空間的用處不大,但是在一些其他類型的構(gòu)建,比如從svn中簽出代碼構(gòu)建時(shí),用處就體現(xiàn)出來了,另外,一些hudson的插件,所利用的文件(構(gòu)建腳本生成,這些插件不會(huì)去關(guān)注文件產(chǎn)生,而是對(duì)這些文件做二次處理)都是放到工作空間的,工作空間相當(dāng)與構(gòu)建系統(tǒng)和hudson的一個(gè)交流中介.推薦是每個(gè)項(xiàng)目有自己獨(dú)立的工作空間.
        2.自動(dòng)構(gòu)建的頻率設(shè)定
        
        也就是什么時(shí)候觸發(fā)構(gòu)建,三種方式:
            當(dāng)別的項(xiàng)目構(gòu)建完畢后發(fā)生構(gòu)建
            利用cron表到式來指定頻率,對(duì)cron表達(dá)式不熟悉的話,可以參考quartz(hudson內(nèi)部使用的調(diào)度框架)相關(guān)的文檔.
            檢測scm(svn、cvs等)的狀態(tài),如果檢測到變化,自動(dòng)發(fā)生構(gòu)建.

        借助husdon,基本能做到無人值守構(gòu)建和部署,不少插件可以利用,也可以開發(fā)自己的插件.上面的僅僅是一個(gè)例子而與,如果要應(yīng)對(duì)實(shí)際工作中的問題,得好好研究才行.
        


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 成人免费看黄20分钟| 亚洲国产成人乱码精品女人久久久不卡| 亚洲国产精品yw在线观看| 国产三级免费观看| 在线观看肉片AV网站免费| 亚洲粉嫩美白在线| 青青草原亚洲视频| 最新仑乱免费视频| 免费无码又爽又刺激高潮软件| 亚洲制服丝袜一区二区三区| 亚洲成a人片在线观看国产| 91久久精品国产免费一区| 男女超爽视频免费播放| 亚洲综合日韩中文字幕v在线| 免费va在线观看| 精品国产免费人成电影在线观看| 色五月五月丁香亚洲综合网| 亚洲一区综合在线播放| 亚洲成人国产精品| 操美女视频免费网站| 国产精品免费无遮挡无码永久视频 | 亚洲av日韩av欧v在线天堂| 每天更新的免费av片在线观看| 黄色a三级免费看| 亚洲人成图片网站| 亚洲a在线视频视频| 亚洲精品无码久久毛片| 大地资源在线观看免费高清 | 亚洲?V无码乱码国产精品| 最近中文字幕大全中文字幕免费| 一级美国片免费看| 亚洲精品国产高清在线观看| 精品无码一区二区三区亚洲桃色| 亚洲精品综合久久| 国产男女猛烈无遮档免费视频网站 | 99精品在线免费观看| 国产高潮流白浆喷水免费A片 | 亚洲成aⅴ人片久青草影院按摩| 亚洲精品免费在线| 亚洲欧洲第一a在线观看| 综合久久久久久中文字幕亚洲国产国产综合一区首 |