需要在Windows Server下使用Jenkins,本篇博客記錄了在Windows Server 2012 R2上安裝調(diào)試Jenkins的過程,Jenkins版本選擇為1.584,本篇博客耗時(shí)6小時(shí)。
一、準(zhǔn)備工作
準(zhǔn)備好如下軟件環(huán)境或安裝包:
-
Windows Server 2012 R2
-
jenkins-1.584.zip安裝包
-
SVN客戶端,選擇TortoiseSVN,TortoiseSVN-1.8.8.25755-x64-svn-1.8.10.msi
-
ant用于編譯Java工程,apache-ant-1.9.4-bin.zip
-
msbuild用于編譯Visual Studio工程,默認(rèn)在.NetFramework中集成,Windows Server 2012 R2默認(rèn)安裝,版本為4.0
-
jdk,用于編譯java工程,為ant所依賴
-
vs2012(本不用安裝vs2012,但是在使用msbuild的時(shí)候會(huì)報(bào)錯(cuò),安裝vs2012解決該問題,下文會(huì)描述詳細(xì)信息)
二、安裝
將準(zhǔn)備工作中的軟件包都安裝到windows server 2012 R2上,并設(shè)置相關(guān)的環(huán)境變量,并實(shí)驗(yàn)驗(yàn)證其可用性:
-
jenkins默認(rèn)安裝好的地址:http://localhost:8080
-
設(shè)置JAVA_HOME等jdk環(huán)境變量
-
ant的bin目錄、JAVA_HOME\bin、JAVA_HOME\jre\bin,msbuild.exe路徑,要加到系統(tǒng)變量PATH中去
-
在cmd中實(shí)驗(yàn)java,javac,ant,msbuild.exe可用即可。
三、新建msbuild編譯構(gòu)造項(xiàng)目
-
首先通過http://localhost:8080地址訪問Jenkins服務(wù)(當(dāng)然,配置好防火墻也可以遠(yuǎn)程訪問),點(diǎn)擊“新建”按鈕,來新建一個(gè)Jenkins工程。需要說明的是,Jenkins可以遠(yuǎn)程調(diào)度編譯任務(wù),能將需要編譯工作安排到遠(yuǎn)端節(jié)點(diǎn)完成,但是本文中使用的是本地編譯,也即master節(jié)點(diǎn)編譯,這么做的好處是能夠避免因?yàn)镴enkin遠(yuǎn)端代理的穩(wěn)定性問題而帶來的整個(gè)系統(tǒng)不穩(wěn)定,此前出現(xiàn)過Windows 7編譯節(jié)點(diǎn)不間斷的掉線的問題。
-
填寫編譯項(xiàng)目的名稱,我的習(xí)慣是Project-OS-Platform,通常選擇“構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目”,如果此前有類似的項(xiàng)目,可以選擇“復(fù)制已有的item”,點(diǎn)擊“OK”,下一步輸入對(duì)該項(xiàng)目的簡單描述:
-
設(shè)置SVN源,輸入完成后Jenkins會(huì)自動(dòng)監(jiān)測(cè)該SVN地址是否能夠checkout, 如果第一次輸入,需要點(diǎn)“enter credential”輸入該SVN的用戶m

-
接著,可以設(shè)置合適觸發(fā)該構(gòu)建工程,如下圖所示,這里沒有設(shè)置,實(shí)際是手動(dòng)觸發(fā)。然后設(shè)置具體的構(gòu)建步驟,本項(xiàng)目使用了兩種:msbuild和windows的bat腳本(一個(gè)用于編譯vs2012工程,一個(gè)用于編譯jna項(xiàng)目)。需要注意的是msbuild的commandline arguments的寫法。
 
-
最后,可以設(shè)置構(gòu)建完成后的工作,例如上傳到svn備份,被項(xiàng)目沒有設(shè)置。
-
點(diǎn)解“保存”后,手動(dòng)點(diǎn)擊“立即構(gòu)建”按鈕,在構(gòu)建歷史中會(huì)出現(xiàn)構(gòu)建的圖標(biāo),紅色表示失敗,點(diǎn)擊以時(shí)間命令的本次構(gòu)建事件,再點(diǎn)擊Console Output可以顯示此次編譯構(gòu)建的具體過程,如果失敗的話,根據(jù)打印找失敗的原因
 
最后,我在該工作中遇到兩個(gè)小問題:
-
Windows Server 2012自帶.NetFramework,本身就有msbuild,本以為不用再安裝其他編譯工具,但是在編譯vs2012的項(xiàng)目時(shí),會(huì)報(bào)錯(cuò):“error MSB4019: Theimported project "C:\Microsoft.Cpp.Default.props" was not found”,參考1和參考2用于解決此問題,本文中直接安裝了vs2012,而沒有去設(shè)置注冊(cè)表(因?yàn)槲野l(fā)現(xiàn)相關(guān)目錄確實(shí)沒有Microsoft.Cpp.Default.props文件,只有安裝了vs2012才有)
-
Jenkins在做svn checkout的時(shí)候,會(huì)看本地時(shí)間和服務(wù)器的時(shí)間對(duì)比,我這出現(xiàn)過時(shí)間問題導(dǎo)致Jenkins認(rèn)為沒必要做checkout的情況,通過調(diào)整時(shí)間解決此問題。
-
一個(gè)SVN連不上的問題,只有Windows平臺(tái)才有:https://issues./browse/JENKINS-13835,最終發(fā)現(xiàn)是與SVN服務(wù)器本身的防火墻有關(guān)系,關(guān)閉防火墻即可。(實(shí)際上與某個(gè)端口有關(guān),暫時(shí)未確認(rèn)具體端口)
參考:
1.https://social.msdn.microsoft.com/Forums/vstudio/en-US/141b5a9d-13cf-4f71-beb3-1b521d2881ba/build-failure-after-installing-tfs-2013-preview-the-imported-project
2.http:///questions/16092169/why-does-msbuild-look-in-c-for-microsoft-cpp-default-props-instead-of-c-progr
|