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, 再對其進行優化,比如加入 打包環節