>[danger] # Jenkins簡介
Jenkins簡介
Jenkins自動化部署可以解決集成、測試、部署等重復性的工作,工具集成的效率明顯高于人工操作;并且持續集成可以更早的獲取代碼變更的信息,從而更早的進入測試階段,更早的發現問題,這樣解決問題的成本就會顯著下降:持續集成縮短了從開發、集成、測試、部署各個環節的時間,從而也就縮短了中間出現的等待時間;持續集成也意味著開發、集成、測試、部署得以持續。。
使用Maven(Ant)等來實現lava項目自動化構建發布部署。這些工具可以幫助在構建過程中實現自動化發布、回滾等動作。
1、簡介
Jenkins是一個用Java編寫的開源的持續集成工具。官方網站:https://jenkins.io/
Jenkins能實時監控持續集成過程中所存在的問題,提供詳細的日志文件和提醒功能,還能用圖表的形式,形象地展示項目構建的趨勢和穩定性。
2、特點
?易安裝:僅僅一個jenkins.war,叢官網下載該文件后,直接運行,無需額外的安裝,
?更無需安裝數據庫;
?易配置:提供友好的GUI配置界面;
?變更支持:Jenkins能從代碼倉庫(SVN/Git)中獲取并產生代碼更新列表,并輸出到編譯輸出信息中;
?支持永久鏈接:用戶是通過Web來訪問Jenkins的,而這些Web頁面的鏈接地址都是永久鏈接地址,可以在各種文檔中直接使用該鏈接;
?集成E-Mail/RSS/M:當完成一次集成時,可通過這些工具實時收取集成結果(構建-次集成需要花費一定時間,有了這個功能,就可以在等待結果過程中,干別的事情);
?JUnit/TestING測試報告:也就是用以圖表等形式提供詳細的測試報表功能;
?支持分布式構建:Jenkins可以把集成構建等工作分發到多臺計算機中完成;
?文件指紋信息:Jenkins會保存構建集成所產生的jars文件、集成構建使用了哪個版;
支持第三方插件:Jenkins支持第三方插件,這使得Jenkins功能變得越來越強大;
3、持續集成(CI)
含義:頻繁的(一天多次的)將所有開發者的工作合并到主干上。
持續集成的核心在于確保新增的代碼能夠與原先代碼正確的集成。與后續要介紹的持續交付以及持續部署,其最主要的差別也就在于其目標不同。
不過持續集成的流程還存在一定的異議:上圖所示的流程為 Build -> Test,在阮老師的教程里頭是 Test -> Build。不過,持續集成本身只不過是一種軟件工程的方法或者策略,其并不規定具體的實現。在實際的應用中,還是需要結合具體的開發語言或者工具來定。
持續集成的優勢
易于定位錯誤:每一次的代碼集成都需要執行相關的測試工作,持續集成頻繁的集成次數天然的將復雜的代碼邏輯切割為了小塊,也就使得每一次測試中遇到的錯誤能夠更加容易的被定位;
易于控制開發流程:更為細致的工作提交也就意味著更容易判斷當前的工作進度,這對于管理者規劃開發流程而言提供了一個有效的參考,同時也為開發人員省下了匯報工作的時間;
易于減少不必要的工作:build 以及 test 過程的自動化可以為你節約一大票的時間,從而投入到有價值的工作中去
4、持續交付(CD)
持續交付 指的是:一種能夠使得軟件在較短的循環中可靠的發布的軟件工程方法。
與持續集成相比,持續交付的側重點在于 交付,其核心對象不在于代碼,而在于可交付的產物。由于持續集成僅僅針對于新舊代碼的集成過程執行了一定的測試,其變動到持續交付后還需要一些額外的流程。
5、持續部署(CD)
持續部署即在持續交付的基礎上,把部署到生產環境的過程自動化。
6、Maven介紹
Maven項目對象模型(POM)是可以通過一小段描述信息來管理項目的構建、報告和文檔的軟件項目管理工具。
Maven除了以程序構建能力為特色之外,還提供高級項目管理工具。由于Maven的缺省構建規則有較高的可重用性,所以常常用兩三行Maven構建腳本就可以構建簡單的項目。
由于Maven的面向項目的方法,許多Apache Jakarta項目發文時使用Maven,而且公司項目采用Maven的比例在持續增長。
7、傳統網站部署流程
在運維過程中,網站部署是運維的工作之一。傳統的網站部署的流程大致分為:需求分析->原型設計->開發代碼->提交代碼->內網部署->內網測試->確認上線->備份數據->外網更新->外網測試->發布完成。如果在內網測試時發現代碼有異常,返回代碼開發人員名字,調整代碼;如果在外網測試時發現外網部署的代碼有異常,可以及時進行網站回滾。

手動上線步驟:
開發人員發起代碼上線的需求(郵件中包含開發做好的WAR包)-)運維人員連接線上負載調度器(Nginx)-->隔離一組服務器(Tomcat)-->連接服務器(Tomcat)-->備份舊代碼(tar打包)-->刪除舊代碼目錄-->上傳新的WAR包-->外網測試-->測試不通過則通過備份回滾代碼-->測試通過則利用rsync的腳本推送代碼到其他服務器-->統一外網測試->連接調度器恢復隔離機制-->隔離另一組服務器實施上線步驟-->上線完成。
8、目前主流網站部署流程
通過Hudson/Jenkins工具平臺實現全自動部署+測試,是一個可擴展的持續集成引擎,屬于開源軟件項目,旨在提供一個開放易用的軟件平臺,使軟件的持續集成變成可能。Jenkins非常易于安裝和配置,簡單易用。
開發人員:寫好代碼,不需要自己進行源碼編譯、打包等工作,直接將代碼分支存放在SVI、Git倉庫即可。
運維人員:減輕人工干預的錯誤率,同時解放運維人員繁雜的上傳代碼、手動備份、更新等操作。
測試人員:可以通過Jenkins進行簡單的代碼及網站測試

9、Jenkins的工作原理
是先將源代碼從SVN/Git版本控制系統中拷貝一份到本地,然后根據設置的腳本進行build(構建)。整個系統的關鍵就是build腳本,build腳本告訴Jenkins在一次集成中需要執行的任務。
>[danger] ## Windows環境中安裝Jenkins
在最簡單的情況下,Jenkins?只需要兩個步驟:
1、下載最新的版本(一個?WAR?文件)。Jenkins官方網址:?[http://Jenkins-ci.org/](http://jenkins-ci.org/)
2、命運行運行?java?-jar?jenkins.war (默認情況下端口是8080,如果要使用其他端口啟動,可以通過命令行”java –jar Jenkins.war --httpPort=80”的方式修改)
注意:Jenkins?需要運行?Java?5以及以上的版本,老版本是war包新版本是msi如果是war包按照上述步驟安裝即可,msi直接雙擊安裝。
還有一種安裝方式就是將下載的war包文件部署到?servlet?容器,然后啟動容器,在瀏覽器的URL地址欄中輸入類似[http://localhost:8080/jenkins/](http://localhost:8088/hudson/)這樣的地址即可。下圖是安裝成功后的界面(使用的是Linux+Tomcat6+Java6環境):

>[danger]## Jenkins配置
在配置前的一些話:Jenkins的配置不可能全部都說到的,大部分配置是有英文說明的,點擊輸入框后面的問號就可以看見了。英文不會用翻譯工具,多測試幾次,你就懂了。
## 2.1?系統管理
在已運行的Jenkins主頁中,點擊左側的系統管理進入如下界面:

### 2.1.1?提示信息
Ps:版本不同提示的消息有可能不同
### 2.1.1.1?Utf-8編碼
Your?container?doesn't?use?UTF-8?to?decode?URLs.?If?you?use?non-ASCII?characters?as?a?job?name?etc,?this?will?cause?problems.?See?[Containers](http://wiki.jenkins-ci.org/display/JENKINS/Containers)?and?[Tomcat?i18n](http://wiki.jenkins-ci.org/display/JENKINS/Tomcat#Tomcat-i18n)?for?more?details.
Jenkins建議在tomcat中使用utf-8編碼,配置tomcat下conf目錄的server.xml文件
?
Ps:如果Job的控制臺中文輸出亂碼,請將URIEncoding=”utf-8”更改為useBodyEncodingForURI="true"
### 2.1.1.2?新的版本
New?version?of?Jenkins?(1.518.JENKINS-14362-jzlib)?is?available?for?download?(changelog).
提示有新的版本可以下載了,喜歡更新的點擊download去下載吧!
### 2.1.1.3?安全設置

詹金斯允許網絡上的任何人代表您啟動進程。考慮至少啟用身份驗證來阻止濫用。點擊Dismiss忽略該消息,點擊Setup?Security進入設置界面.詳細設置請參考?Configure?Global?Security(安全設置)?章節
### 2.1.2?系統設置
在已運行的Jenkins主頁中,點擊左側的系統管理—>系統設置進入如下界面:

?
?ps:jenkins的根目錄,默認地在C:\\Documents and Settings\\AAA\\.hudson。
### 2.1.2.1?JDK、Maven、Ant配置(圖為Windows環境)
配置一個JDK、Ant、Maven實例,請在每一節下面單擊Add(新增)?按鈕,這里將添加實例的名稱和絕對地址。下圖描述了這兩個部分。

點擊“安裝”,添加相應的設置,如下圖:

JDK別名:給你看的,隨便你自己
JAVA\_HOME:這個是本機JDK的安裝路徑(錯誤的路徑會有紅字提示你的)
自動安裝:不推薦這個選項
注:Ant、Maven的配置是一樣的(JDK去oracle官網下載,Ant與Maven去apache官網下載)
Ps:每個文本框后面都有個問號,點擊問號就會出現幫助信息
### 2.1.2.2?郵件通知配置(默認)
#### 2.1.2.2.1?配置發件人地址

系統管理員郵件地址(System?Admin?e-mail?address):Jenkins郵件發送地址,切記,必須設置。
#### 2.1.2.2.2?配置郵件通知

設置:SMTP服務器,勾選"使用SMTP認證",輸入用戶名與密碼
Ps:小技巧:用戶默認郵件后綴配置了后,以后你填寫郵件地址只需要@之前的就行了
### 2.1.2.3?Subversion配置

?
Subversion?Workspace?Version:Subversion?的版本號,選擇你對應的版本號就行了
### 2.1.3?Configure?Global?Security(安全設置)
在已運行的Jenkins主頁中,點擊左側的系統管理—>Configure?Global?Security進入如下界面:

設置如上圖,保存后系統管理中就出現管理用戶的選項。頁面右上角也會出現登錄/注冊的選項。
此設置:只有登錄用戶可以做任何事
### 2.1.4?管理用戶設置
在右上角點擊注冊

點擊sign?up按鈕,提示你現在已經登錄.返回首頁.
登錄后和匿名賬號看到的首頁有幾點不同,如下圖紅框所示:

### 2.1.5?管理插件設置
建議先閱讀[Jenkins插件](http://www.cnblogs.com/zz0412/p/jenkins02.html#_Jenkins%E6%8F%92%E4%BB%B6)章節,在回來安裝如下所示的插件。
需求:這個插件將生成的構件(war或者ear)部署到主流的服務器上。
插件名稱:[Deploy?Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Deploy+Plugin)
插件介紹:This?plugin?takes?a?war/ear?file?and?deploys?that?to?a?running?remote?application?server?at?the?end?of?a?build
## 2.2?項目構建設置
### 2.2.1?構建自由風格的Job
#### 2.2.1.1?新建自由風格構建任務
在已運行的Jenkins主頁中,點擊左側的新建Job進入如下界面:

這時,需要為新的構建任務指定一個名稱。(這里輸入的任務名稱為:Ant\_test)這里有幾種的任務類型可供選擇,鑒于初步介紹,先選擇構建一個自由風格的軟件項目。對于其他的類型,經常使用的是拷貝已存在任務;這主要為了能在現有的任務基礎上新建任務。點擊OK按鈕.
**需要注意的是**:
1.Job名稱千萬不要用中文名稱(不作死就不會死)。
2.創建Job名稱時最好有個規劃,因為我們最后會通過正則匹配自動將Job歸類,比如我喜歡 “項目前綴\_一些說明-Job類型”這種方式。
### 2.2.1.2?構建任務配置
### 2.2.1.2.1?源碼管理配置
演示是使用Subversion的鏈接,在Repository?URL中輸入你的項目鏈接,如果沒有權限則會提示如下圖:

?
設置成功后,就直接從SVN此目錄獲取文件到本地。Ps:要先添加Credentials。添加的方法如下操作:
點擊Jenkins首頁左側Credentials,進入頁面


下一步:一般都是使用的用戶名和密碼登陸的

Ps:svn的用戶名和密碼設置了是沒有辦法在web界面修改的。如果要修改則先去Jenkins目錄刪除hudson.scm.SubversionSCM.xml文件
### 2.2.1.2.2?構建觸發器
在其他項目構建完成后才執行構建:指定的項目完成構建后,觸發此項目的構建。
Poll?SCM?:這是CI?系統中常見的選項。當您選擇此選項,您可以指定一個定時作業表達式來定義Jenkins每隔多久檢查一下您源代碼倉庫的變化。如果發現變化,就執行一次構建。例如,表達式中填寫0,15,30,45?\*?\*?\*?\*將使Jenkins每隔15分鐘就檢查一次您源碼倉庫的變化。
Build?periodically?:此選項僅僅通知Jenkins按指定的頻率對項目進行構建,而不管SCM是否有變化。如果想在這個Job中運行一些測試用例的話,它就很有幫助。

### 2.2.1.2.3?Ant構建配置
因為我的項目是用ant腳本實現的編譯和打包,所以我選擇的是Invoke?Ant,Ant?Version選擇你Ant配置的那個名字,注意不要選擇default喔,那個選擇了沒有用。

Ps:如果你的構建腳本build.xml不在workspace根目錄、或者說你的構建腳本不叫build.xml。那么需要在高級里設置Build?File選項的路徑,指明你的腳本。注意:是相對路徑
## 2.2?監控
當任務一旦運行,您將會看到這個任務正在隊列中的儀表板和當前工作主頁上運行。這兩種顯示如下。


一旦構建完成后,完成后的任務將會有三個地方進行顯示。
你可以在Jenkins的控制面板上看到它,如下圖。

在上面展示的截圖中,您將注意到有兩個圖標描述當前作業的狀態。S欄目代表著“最新構建狀態”,W欄目代表著“構建穩定性”。Jenkins使用這兩個概念來介紹一個作業的總體狀況:
構建狀態:下圖中分級符號概述了一個Job新近一次構建會產生的四種可能的狀態:?
Successful:完成構建,且被認為是穩定的。
Unstable:完成構建,但被認為不穩定。
Failed:構建失敗。
Disabled:構建已禁用。

構建穩定性:?當一個Job中構建已完成并生成了一個未發布的目標構件,如果您準備評估此次構建的穩定性,Jenkins會基于一些后處理器任務為構建發布一個穩健指數?(從0-100?),這些任務一般以插件的方式實現。它們可能包括單元測試(JUnit)、覆蓋率(Cobertura?)和靜態代碼分析(FindBugs)。分數越高,表明構建越穩定。下圖中分級符號概述了穩定性的評分范圍。任何構建作業的狀態(總分100)低于80分就是不穩定的。

你也可以在當前Job主界面上看到它,如下圖左下部分

當前作業主頁上還包含了一些有趣的條目。左側欄的鏈接主要控制Job的配置、刪除作業、構建作業。右邊部分的鏈接指向最新的項目報告和構件。
通過點擊構建歷史(Build?History)中某個具體的構建鏈接,您就能跳轉到Jenkins為這個構建實例而創建的構建主頁上。如下圖

如果你想通過視圖輸出界面來監控當前任務的進展情況。你可以單擊Console?Output(控制臺輸出)。如果工作已完成,這將顯示構建腳本產生的靜態輸出;如果作業仍然在運行中,Jenkins將不斷刷新網頁的內容,以便您可以看到它運行時的輸出。如下圖:

>[danger]## Jenkins插件
從Jenkins現有的功能擴展或開發者們為Jenkins提供的新功能都可以稱之為Jenkins插件。有些插件可以無縫添加到您的構建過程,而其它,諸如除CVS和Subversion的SCM插件則需要源代碼控制系統的支持。
### 3.1?Jenkins插件安裝
Jenkins?插件管理器允許您安裝新的插件,和更新您Jenkins服務器上的插件。管理者將連接到聯機資料庫,檢索可用的和已更新的插件。如果您的Jenkins服務器?無法直接連接到外部資源,您可以從Jenkins網站上下載。
在已運行的Jenkins主頁中,點擊左側的系統管理—>管理插件進入如下界面:

它包含四個標簽:
更新:清單中列示了Jenkins為某些插件搜索到了可用的更新。列出的每個插件可以被選擇并應用更新。
可選安裝:清單中列示了可用于安裝(而不是目前已安裝的)的所有插件。列出的每個插件都可以被選擇并安裝。
已安裝:清單中列示了已經安裝的插件。
高級:允許您通過設定HTTP代理的方式使Jenkins與在線插件庫建立連接。此外,還提供了一個上傳設備,可以安裝你在Jenkins以外已下載的那些插件。
由上圖可知,Jenkins缺省集成了maven2插件,并且一旦插件有新版本,會提示更新新版本插件。
如果想安裝新的插件,可以點擊tab分頁中的可選插件。如下圖:

從圖可知,各種Jenkins插件根據之前所記述的類型進行分門別類。可勾選任意想安裝的Jenkins插件,點擊Install?without?restart按鈕進行安裝。安裝后,所有插件以hpi作為后綴名放置在plugins文件夾下。如果是高級用戶還可以自行開發插件方便具體項目使用。
注意:安裝完成后需要重啟Jenkins部署的容器。這樣才能使用新裝的插件。
### 3.2?Jenkins插件安裝示例
Jenkins運行自動部署war包到servlet容器內,要實現這個功能必須安裝一個插件。


下面附上完整的用戶手冊供大家參考
https://www.jenkins.io/zh/doc/
- 接口測試
- 5.1 postman 接口測試簡介
- 5.2 postman 安裝
- 5.3 postman 創建請求及發送請求
- 5.4 postman 菜單及設置
- 5.5 postman New菜單功能介紹
- 5.6 postman 常用的斷言
- 5.7 請求前腳本
- 5.8 fiddler網絡基礎及fiddler簡介
- 5.9 fiddler原理及使用
- 5.10 fiddler 實例
- 5.11 Ant 介紹
- 5.12 Ant 環境搭建
- 5.13 Jmeter 簡介
- 5.14 Jmeter 環境搭建
- 5.15 jmeter 初識
- 5.16 jmeter SOAP/XML-RPC Request
- 5.17 jmeter HTTP請求
- 5.18 jmeter JDBC Request
- 5.19 jmeter元件的作用域與執行順序
- 5.20 jmeter 定時器
- 5.21 jmeter 斷言
- 5.22 jmeter 邏輯控制器
- 5.23 jmeter 常用函數
- 5.24 soapUI概述
- 5.25 SoapUI 斷言
- 5.26 soapUI數據源及參數化
- 5.27 SoapUI模擬REST MockService
- 5.28 Jenkins的部署與配置
- 5.29 Jmeter+Ant+Jenkins 搭建
- 5.30 jmeter腳本錄制
- 5.31 badboy常見的問題