這兩天學習了一下持久化集成工具Jenkins,在自己的本地搭建一個簡單的Jenkins環境。
使用環境:Windows64系統,JDK1.8,eclipse,svn(Windows版本VisualSVN-Server-3.5.7-x64.msi),tomcat7,apache-maven-3.2.5,Jenkins_2.32.1等。
注:Jenkins2.32需要JDK7及以上版本;
一、持續集成
先了解一下持續集成的概念:持續集成是一種軟件開發實踐,即團隊開發成員經常集成它們的工作,通過每個成員每天至少集成一次,也就意味着每天可能會發生多次集成。每次集成都通過自動化的構建(包括編譯,發布,自動化測試)來驗證,從而盡早地發現集成錯誤。而Jenkins就是基於Java開發的一種持續集成工具,用於監控持續重復的工作。
持續集成的核心價值:
1)持續集成中的任何一個環節都是自動完成的,無需太多的人工干預,有利於減少重復過程以節省時間、費用和工作量;
2)持續集成保障了每個時間點上團隊成員提交的代碼是能成功集成的。換言之,任何時間點都能第一時間發現軟件的集成問題,使任意時間發布可部署的軟件成為了可能;
3)持續集成還能利於軟件本身的發展趨勢,這點在需求不明確或是頻繁性變更的情景中尤其重要,持續集成的質量能幫助團隊進行有效決策,同時建立團隊對開發產品的信心。
持續集成的原則:
1)需要版本控制軟件保障團隊成員提交的代碼不會導致集成失敗。常用的版本控制軟件有IBM Rational ClearCase、CVS、Subversion等;
2)開發人員必須及時向版本控制庫中提交代碼,也必須經常性地從版本控制庫中更新代碼到本地;
3)需要有專門的集成服務器來執行集成構建。根據項目的具體實際,集成構建可以被軟件的修改來直接觸發,也可以定時啟動,如每半個小時構建一次;
4)必須保證構建的成功。如果構建失敗,修復構建過程中的錯誤是優先級最高的工作。一旦修復,需要手動啟動一次構建。
持續集成系統的組成 :
由此可見,一個完整的構建系統必須包括:
1)一個自動構建過程,包括自動編譯、分發、部署和測試等。
2)一個代碼存儲庫,即需要版本控制軟件來保障代碼的可維護性,同時作為構建過程的素材庫。
3)一個持續集成服務器。本文中介紹的Jenkins就是一個配置簡單和使用方便的持續集成服務器。
二、Jenkins是什么?
Jenkins是一個開源軟件項目,旨在提供一個開放易用的軟件平台,使軟件的持續集成變成可能。
功能: 1、持續的軟件版本發布/測試項目。
2、監控外部調用執行的工作。
特性:
1.開源
2.安裝、配置簡單--只要把jenkins.war部署到servlet容器,不需要數據庫支持,所有配置都是通過其提供的web界面實現。
3.集成RSS/E-mail通過RSS發布構建結果或當構建完成時通過e-mail通知。
4.生成JUnit/TestNG測試報告。
5. Jenkins支持分布式構建
6.插件支持:支持擴展插件,目前有幾百個現成的插件可以使用,這些插件涵蓋從版本控制、構建工具、代碼質量、構建通知、集成外部系統、 UI定制、游戲等等各個方面。
三、安裝配置
jenkins官網:https://jenkins.io/index.html,選擇適合自己的版本下載即可。我的版本 for Windows。
1.安裝:解壓zip文件得到,雙擊安裝即可,根據自己的需求選擇要安裝的目錄。我的安裝目錄如下:
安裝完成后如何驗證一下是否成功呢?Jenkins.war!
驗證方式:執行命令行或直接將Jenkins.war放到tomcat webapps下啟動服務即可
(1)打開cmd命令行,進入到Jenkins安裝目錄,直接運行java -jar jenkins.war 默認的端口是8080(在jenkins.xml中配置),也可執行java -jar jenkins.war --httpPort=7080,自定義其他端口驗證
啟動成功如下:
(2)直接將Jenkins.war放到tomcat webapps下啟動服務即可。
上述兩種方式啟動成功后,訪問http://localhost:7080,根據提示設置用戶登錄信息,我的已設置直接進入登錄頁面
輸入用戶名密碼登錄:成功!!!
2.配置:進入 系統管理--Global Tool Configuration
配置JDK,MAVEN
配置完成后保存。接下來就可以新建job了。
3.返回首頁,新建任務,點擊 新建 按鈕,
輸入任務名稱,選擇構建一個自由風格的軟件項目並保存。
在general里面更具自己想需要勾選,包括工作空間,默認C:\Users\admin\.jenkins\workspace;
注意:如果有多個項目,(1)建議工作空間+項目名稱,例:C:\Users\admin\.jenkins\workspace\demo,demo為項目名稱,也可取其它名稱,這樣會在工作空間下新建不同目錄,以便區分不同項目;(2)如果選擇默認空間,可在“源碼管理” 模塊 Local module directory文本框中輸入自己的項目名稱,以區分不同項目
原碼管理,在此我使用svn;填寫Repository URL及Credentials,及svn的地址及用戶信息,其中Credentials在首頁Credentials選項新建;
注意:如果是Maven項目,且有多個模塊,則Repository URL路徑指向所有項目的根地址
在首頁Credentials選項新建,輸入svn的賬號和密碼
構建觸發器:
Poll SCM:定時檢查源碼變更(根據SCM軟件的版本號),如果有更新就checkout最新code下來,然后執行構建動作。我的配置如下:
*/5 * * * * (每5分鍾檢查一次源碼變化)
Build periodically:周期進行項目構建(它不care源碼是否發生變化),我的配置如下:
0 2 * * * (每天2:00 必須build一次源碼)
4.項目構建:
maven version : 選之前錄入的maven;
Goals選項輸入打包編譯時要執行的命令,如:clean package/clean install;
POM選項選擇pom文件所在的相對位置,如果有多個Maven模塊,選擇父級的pom.xml;
保存,首頁左側 點擊 立即構建 選項即可構建項目了。
查看構建日志:
日志信息:
構建成功!!!如報一下錯誤:
解決方案:
(a)修改pom.xml文件
<build>
<finalName>demo</finalName>
</build>
添加<defaultGoal>install</defaultGoal>
即:
<build>
<defaultGoal>install</defaultGoal>
<finalName>demo</finalName>
</build>
(b)指定默認Goals
重新構建。
5.部署項目:
構建后操作:
配置后保存,重新構建,其中demo是我web項目的名稱,此處的http://localhost:8081,是部署demo項目的服務器和端口
WAR/EAR files:target\demo.war,是構建后生成的war包,正常情況下打包成功后就會部署到tomcat下webapps目錄下,如
果構建成功,但沒有自動部署,修改WAR/EAR files:**/*.war試試。
構建成功后,即可登錄項目驗證:
到此Jenkins部署就完成了!!!!!!!!!!!!!!
最后還有一個自動部署的問題:上面我們已經配置了構建觸發器,那怎么用呢?
看管理插件:
已安裝插件,如果在已安裝插件未找到,即未安裝,可在可選插件中搜素安裝即可。
。。。。。。。。。