1. 程式人生 > >Jenkins構建ant專案

Jenkins構建ant專案

Jenkin建立任務 • 在瀏覽器中輸入:http://localhost:8080/,進入jenkins管理頁面 • 選擇左邊選單的“新建” • 選擇構建一個自由風格的軟體專案,輸入item名稱:empi-core(醫院平臺中的某個模組),點OK

在這裡插入圖片描述

Jenkin任務SVN配置 • 在原始碼管理中選擇“Subversion” • 在Repository Url中輸入svn的url地址後出現紅色提示資訊,點選enter credential • 如果沒有出現紅色提示資訊,說明SVN的這個url已經驗證過使用者名稱和密碼了,就不需要再次驗證了

在這裡插入圖片描述

Jenkin任務SVN配置 • 選擇 “username/password authentication” • 輸入SVN的使用者名稱和密碼,點ok

在這裡插入圖片描述

Jenkin任務構建觸發器 • build after other project are build:在其他專案構建完成後才執行構建:指定的專案完成構建後,觸 發此專案的構建。 • Poll SCM :這是CI 系統中常見的選項。當您選擇此選項,您可以指定一個定時作業表示式來定義 Jenkins每隔多久檢查一下您原始碼倉庫的變化。如果發現變化,就執行一次構建。 • Build periodically :此選項僅僅通知Jenkins按指定的頻率對專案進行構建,而不管SCM是否有變化。 • 我們選擇Poll SCM,並且在日程表中輸入“* * * * *",表示每隔一分鐘就去SVN檢查一次看是否有程式碼更 新,一旦發現程式碼更新就重新構建一次

在這裡插入圖片描述

Jenkin任務-新增構建步驟 • 在新增構建後步驟中選擇“Invoke Ant” • 在“Invoke Ant”中 選擇當前安裝的ant,注意不能選擇default • 在Targets中輸入,構建步驟 clean init build(多個命令之間用空格隔開)

在這裡插入圖片描述

Jenkin任務-build.xml • Ant 的構建的每個Target不是隨便寫的,而是來自build.xml這個檔案中定義的target的 name • build.xml 這個檔案應該放在jenkin的workspace資料夾下的每個任務的根目錄下,例如 • C:\Program Files (x86)\Jenkins\workspace\empi\build.xml • build.xml這個檔案可以通過自己手工編寫,也可以在eclipse裡面自動轉換生成(前提是 eclipse的環境沒有問題,各種依賴的jar包都導進來了) • 手工編寫: 要了解其中的幾個比較關鍵的標籤 • 1.標籤 • 每個構建檔案對應一個專案。標籤時構建檔案的根標籤。它可以有多個內在屬 性 • (1) default表示預設的執行目標,這個屬性是必須的。 • (2) basedir表示專案的基準目錄。 • (3) name表示專案名。 • (4) description表示專案的描述。 • 每個構建檔案都對應於一個專案,但是大型專案經常包含大量的子專案,每一個子專案都可 以有自己的構建檔案。

Jenkin任務-build.xml • 2.標籤 • 一個target標籤可以依賴其他的target標籤。例如,有一個target用於編譯程式,另一個 target用於打包。打包之前必須先編譯該檔案,因此打包的target依賴於編譯程式的 target。 Target的所有屬性如下。 • (1).name表示標明,這個屬性是必須的。 • (2).depends表示依賴的目標。 • (3)if表示僅當屬性設定時才執行。 • (4)unless表示當屬性沒有設定時才執行。 • (5)description表示專案的描述。 • Ant的depends屬性指定了target的執行順序。Ant會依照depends屬性中target出現順序 依次執行每個target。在執行之前,首先需要執行它所依賴的target。程式中的名為run的 target的depends屬性compile,而名為compile的target的 depends屬性是prepare,所 以這幾個target執行的順序是prepare->compile->run。一個target只能被執行一次,即 使有多個target依賴於它。如果沒有if或unless屬性,target總會被執行。 • 其他更為詳細的請見 http://www.cnblogs.com/xionghui/archive/2012/03/13/2393679.html

Jenkin任務-舉例 :helloworld的build.xml • <?xml version="1.0" encoding="UTF-8" ?> • • • • • • • • • • • • • • • • • • • • • • • •

Jenkin任務-Eclipse中匯出build.xml • 將專案導進eclipse:開啟eclipse,選擇“file->import->Existing Project into Workspace",選擇專案 的程式碼目錄所在,要選擇src的上一個層目錄,點“finsish”完成, 這樣需要構建的程式碼就被導進了eclipse

在這裡插入圖片描述

Jenkin任務-Eclipse中匯出build.xml • 對於非maven的專案,專案所依賴的包就不會集中的放在倉庫中,而是分別放在幾個地方,你可以從 eclipse的左側看出 一部分在WebRoot/WEB_INF/lib或者WebContent/WEB_INF/lib下面(這裡面的包是從SVN上下載時 一起下載下來的), 一部分在JRE SYSTEM LIBRARY,Java EE 6 Libraries, Web App Libraries(這裡面都是JDK的一些標 準的基礎的包)

在這裡插入圖片描述

Jenkin任務-Eclipse中匯出build.xml 一部分是Tomcat中的包,需要通過在eclipse中匯入tomcat來匯入 開啟eclipse->windows->preference->server->runningtime

在這裡插入圖片描述

Jenkin任務-Eclipse中匯出build.xml • 選擇右上角的“add”按鈕,選擇你所安裝的tomcat,例如”Apache Tomcat v6.0“

在這裡插入圖片描述

Jenkin任務-Eclipse中匯出build.xml • 輸入Tomcat 的安裝目錄所在地址,點選finish

在這裡插入圖片描述

Jenkin任務-Eclipse中匯出build.xml • 經過這些操作之後,依賴的包基本上都有了,如果還提示缺少包,諮詢開發人員, • 一定要等依賴的包都找到之後才能匯出生成build.xml,否則在jenkins裡面的跑的時候肯定也會報錯,這時還需要返回eclipe去找包,再重新匯出build.xml • 在eclipse中選中專案節點,在右鍵選單中選”匯出“,在匯出介面中選擇”Ant Buildfiles",點finish,這樣就可以看到在eclipse的workspace中對應於這個專案的根節點下面出現了build.xml這個檔案

在這裡插入圖片描述

Jenkin任務-Eclipse中匯出build.xml • 通過Eclipse匯出的build.xml 比較長,因為裡面有很多關於jar包所在路徑的資訊,而我們不需要全部看 懂,只找出關鍵的幾個Target,包括:clean, init, build,compile等等 • 因為 Target的name是可以自由定義的,所以關鍵是看到一些Target下面的子節點是什麼 • 例如: init 中一般做的事情是 …,(建立用於儲存編譯後生成的.class目錄) • clean中一般做的事情是…( 刪除上一次編譯生成的存放class檔案的目錄或 檔案) • build中一般做的事情是…,(編譯java原始檔,生成目標的.class檔案) • package中一般做的事情是…, …(將生成的.class檔案打包成.jar或 者.war 包,以待部署) • 關鍵在於:分析清每個Target在做什麼,按照 清理 ->初始化->編譯->打包 這個順序,將對應得Target 填進 jenkins中

在這裡插入圖片描述

Jenkin任務郵件通知設定 • 在新增構建後步驟中選擇“E-mail Notification” • 在recipients中輸入接受人的郵件地址:[email protected],如果多個郵件地址用空格來隔開

Jenkin任務-打包 • 首先要修改build.xml檔案,新增用於打包的target • 打包的target寫法如下,在build.xml中新增 其中destfile=“package/EMPI-Core.war是打包生成的包的名字和所存放的相對路徑, basedir=”WebRoot“ 是被打包的相對路徑

• 在此“立即構建”EMPI-Core專案,構建完成之後你可以在jenkins的安裝目錄下的 C:\Program Files (x86)\Jenkins\workspace\empi-core\package,看到 EMPI-Core.war這個包, 說明打包成功

Jenkin任務-部署(方案1 利用jenkins外掛) • 首先要安裝外掛”deploy-to-container-plugin“,在jenkins首頁選擇”管理外掛“ • 在:管理外掛中選擇”可安裝外掛“,搜尋”deploy-to-container-plugin“,然後直接點選”安裝“, jenkins將自動安裝

在這裡插入圖片描述

Jenkin任務-部署 • 外掛安裝完之後,在構建後操作中將會出現"Deploy war/ear to container",選擇該項 • WAR/EAR files:是war包的相對路徑(相對於workspace) • content path:tomcat的釋出路徑,即使用localhost/(content path設定的名字)來訪問專案. • contaners :釋出到的容器,主要可釋出到tomcat、jboss、GlassFish,這裡選擇已經安裝好的Tomcat7.x,然後輸入Tomcat的使用者名稱和密碼,關鍵還有Tomcat的url

在這裡插入圖片描述

Jenkin任務-部署 tomcat配置 • 上一環節要輸入tomcat的使用者名稱和密碼,還需要對tomcat進行配置 • 進入tomcat的安裝目錄,修改D:/apache-tomcat-7.0.67/conf/tomcat-users.xml • 修改如下:

在這裡插入圖片描述

Jenkin任務-部署(方案2 手工修改build.xml) • 方案2:可以在build.xml中新增 deploy的 target • Deploy的步驟:1,關閉tomcat(否則無法刪除以前部署的包) 2 . 刪除tomcat安裝目錄的webapp下面的舊的war包和解壓後的資料夾 3 複製新的war包到tomcat安裝目錄的webapp下面 4 重啟 tomcat 5 在瀏覽器中輸入:http://localhost:8082/EMPI-Core 可以正常訪問說明部署成功 • 返回修改EMPI-Core的配置,新增 war和 deploy 這兩個target

在這裡插入圖片描述

Jenkin任務-部署 總結 • 方案1 (利用 jenkins 外掛) • 優點:不需要修改程式碼,不但可以部署到本地的tomcat,還可以部署到遠端的tomcat, • 缺點:在部署之後如果想加上selenium webdriver的python 測試指令碼需要 另外構建一個任務專 門用於測試 • 方案 2 (手動修改build.xml) • 優點:自由定義部署過程,部署完之後可以繼續加上selenium webdriver的python 測試指令碼 • 缺點:不能部署到遠端伺服器 • 部署成功之後我們可以在本地輸入 http://localhost:8082/EMPI-Core 就可以看到患者管理的頁面 • 如果部署在遠端的tomcat伺服器,在本地可以輸入 http:// 遠端伺服器IP:8082/EMPI-Core 來訪問

Jenkin任務-立即構建 • 點選”儲存“,這個jenkins任務就建立好了,返回首頁 • 手工構建:選擇專案”hs-pd-bi“ 旁邊的黑色小箭頭,然後在彈出的選單中選擇”立即構建“ • 注意:新建立的任務在儲存之後會自動觸發構建

在這裡插入圖片描述

Jenkin任務-立即構建 • 立即構建之後,這個任務會自動觸發SVN,從SVN上面下載最新的程式碼

在這裡插入圖片描述

在這裡插入圖片描述

Jenkin任務-總結 • Jenkin 建立maven專案相對ant來說更簡便些,以後開發的新的程式都會基於maven來做 • 對於maven專案,關鍵在於兩個xml檔案,setting.xml 和 pom.xml, • setting.xml 配置好一次就可以了,pom.xml 對於每個小模組都會有一個 • pom.xml中最關鍵的是配置好,不過這個檔案開發的都會大致寫好,只 要看的懂就可以了 • 對於非maven的專案,其實開發的也可以在eclipse將其轉換成maven的專案 • 對於非maven的專案使用ant來構建也是可以的,就是自己寫build.xml比較複雜和麻煩 • 因此推薦在eclipse中將環境配置好後匯出 build.xml, 再對其進行優化,比如加入 打包環節