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

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

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

    Sky's blog

    我和我追逐的夢

    常用鏈接

    統(tǒng)計(jì)

    其他鏈接

    友情鏈接

    最新評論

    解決jenkins執(zhí)行sonar時(shí)重復(fù)執(zhí)行兩次test的問題

        在jenkins上建立了一個(gè)job,通過標(biāo)準(zhǔn)的maven命令來執(zhí)行打包測試和上傳artifact到nexus倉庫。mvn 命令為標(biāo)準(zhǔn)格式: clear deploy。

        隨后考慮到需要執(zhí)行sonar,第一個(gè)解決方案是在jenkins中新建一個(gè)名為***_sonar的job,執(zhí)行命令sonar:sonar。在原有job上通過設(shè)置Post-build Action / Build other projects, 將***_sonar加入到 Projects to build,實(shí)現(xiàn)sonar job的在原有job執(zhí)行后觸發(fā)。當(dāng)時(shí)需要勾選"Trigger only if build succeeds",避免構(gòu)建失敗的時(shí)候也觸發(fā)sonar的執(zhí)行。

        這個(gè)方案運(yùn)行正常,但是隨后發(fā)現(xiàn)有些性能問題:sonar的job執(zhí)行時(shí),需要重新update SCM,然后需要再次執(zhí)行test,之后才能進(jìn)行真正屬于sonar的任務(wù)如代碼檢測等。明顯update SCM 和執(zhí)行test是重復(fù)了原有job,純屬浪費(fèi)。這個(gè)重復(fù)執(zhí)行問題隨著測試案例和測試執(zhí)行時(shí)間的增加,會(huì)越來越明顯。因此需要考慮消除這里的重復(fù)問題,減少build的時(shí)間,并節(jié)約jenkins的資源。
        首先考慮兩次scm update的問題,這個(gè)問題的來源在于有兩個(gè)jenkins的job,因此考慮將***_job廢棄,直接在原有job上執(zhí)行sonar。將maven命令修改為以"clear deploy sonar:sonar"。

        這次理所當(dāng)然的只update 一次scm,但是test 還是執(zhí)行了兩次。在install階段執(zhí)行第一次,在sonar:sonar階段執(zhí)行第二次。
        試著在jenkins中安裝sonar的plugin,然后將maven命令修改為原來的"clear deploy",在Post-build Actions勾選sonar,通過jenkins的sonar插件來執(zhí)行sonar。很遺憾,還是兩次test。
        想了想問題還是在sonar這里,為什么不直接使用已經(jīng)執(zhí)行的test的結(jié)果?
        google了一下,發(fā)現(xiàn)sonar自己的文檔中也提到了這個(gè)兩次執(zhí)行test的問題,但是,居然沒有給出解決的方法。
    http://docs.codehaus.org/display/SONAR/Analyse+with+Maven
        不過提到可以通過設(shè)置-Dmaven.test.failure.ignore=true 來要求sonar即使在test執(zhí)行失敗的情況下也要執(zhí)行代碼分析。
        隨后google到sonar的jira記錄,有一個(gè)bug解決這個(gè)問題
    http://jira.codehaus.org/browse/SONAR-415
        jiar記錄中明確提到,“for performance reasons. It avoids executing twice unit tests.”,呵呵,正和我意啊。
        解決的方法,就是通過設(shè)置 sonar.dynamicAnalysis = reuseReports,使得sonar放棄運(yùn)行 test 而直接復(fù)用已有的report,從而避免了二次執(zhí)行test。
        總結(jié):最終的mvn 命令行
    clean deploy sonar:sonar -Dsonar.dynamicAnalysis=reuseReports -Dmaven.test.failure.ignore=true

    posted on 2012-02-14 14:53 sky ao 閱讀(5689) 評論(5)  編輯  收藏 所屬分類: project building

    評論

    # re: 解決jenkins執(zhí)行sonar時(shí)重復(fù)執(zhí)行兩次test的問題 2012-02-14 15:12 sky ao

    剛剛很郁悶的發(fā)現(xiàn),按照上面的命令sonar雖然可以跑,但是出來的結(jié)果里面,少了很重要的一個(gè)內(nèi)容:

    Code coverage 那里沒有內(nèi)容!

    難道非得跑兩次test才行?  回復(fù)  更多評論   

    # re: 解決jenkins執(zhí)行sonar時(shí)重復(fù)執(zhí)行兩次test的問題 2012-06-04 17:45 god

    跑2次有什么問題嗎  回復(fù)  更多評論   

    # re: 解決jenkins執(zhí)行sonar時(shí)重復(fù)執(zhí)行兩次test的問題 2012-06-09 20:41 sky ao

    @god

    沒有特別的壞處,只是測試時(shí)間就要*2了,有點(diǎn)浪費(fèi)時(shí)間和資源。  回復(fù)  更多評論   

    # re: 解決jenkins執(zhí)行sonar時(shí)重復(fù)執(zhí)行兩次test的問題 2012-06-16 22:58 bigfei

    這個(gè)可以通過jenkins的一個(gè)插件解決,google jenkins sonar test plugins.  回復(fù)  更多評論   

    # re: 解決jenkins執(zhí)行sonar時(shí)重復(fù)執(zhí)行兩次test的問題[未登錄] 2012-09-14 16:37 hello

    為什么不第一次構(gòu)建的時(shí)候不執(zhí)行呢
    clean deploy -Dmaven.test.skip=true
    sonar:sonar  回復(fù)  更多評論   

    主站蜘蛛池模板: jizzjizz亚洲日本少妇| 97无码免费人妻超级碰碰夜夜| 亚洲欧美中文日韩视频| 久久亚洲国产精品| 免费国产一级特黄久久| 99久久99这里只有免费费精品 | 日本一区二区免费看| 亚洲国产成人手机在线观看| 亚洲精品国产情侣av在线| 亚洲伊人久久精品影院| 国产精品色午夜免费视频| 久久久久久99av无码免费网站| 久热免费在线视频| 中文字幕免费人成乱码中国| 日韩精品视频在线观看免费| 亚洲精品久久无码| 亚洲精品无码成人片久久不卡| 亚洲国产精品乱码在线观看97| 亚洲天堂在线播放| 亚洲欧洲一区二区| 日本红怡院亚洲红怡院最新| 精品国产日韩亚洲一区| 亚洲成a人片在线观看老师| 国产三级免费观看| 国产乱子伦精品免费无码专区| 日韩中文字幕免费| 在线观看永久免费视频网站| 女人18毛片a级毛片免费| 最近中文字幕mv手机免费高清| 国产免费不卡v片在线观看| 2021久久精品免费观看| 精品香蕉在线观看免费| 无码av免费毛片一区二区| 99无码人妻一区二区三区免费| 亚洲成人免费网站| 久久久亚洲欧洲日产国码是AV| 亚洲精品国产成人专区| 亚洲视频网站在线观看| 亚洲欧洲国产成人精品| 国产精品亚洲精品青青青| 亚洲中文字幕久久精品无码A|