Jenkins全流程搭建
第 1 章 概 述
持續整合(CI)是一種實踐,旨在緩和和穩固軟體的構建過程。持續整合最早由Martin Fowler 於10年前已經提出,希望通過持續整合能夠實現以下過程:
Ø 任何人在任何地點,任何時間可以構建整個專案。
Ø 在持續整合構建過程中,每一個單元測試都必須被執行。
Ø 在持續整合構建過程中,每一個單元測試都必須通過。
Ø 持續整合構建的結果是可以釋出的軟體包。
Ø 當以上任何一點不能滿足時,整個團隊的主要任務就是去解決這個問題。
Jenkins是一個軟體界非常流行的開源CI伺服器,下面主要做一些基礎介紹。
第 2 章 基礎篇
2.1.1 資源下載
另外,還需要下載jdk的安裝包,建議1.5以上版本;
2.1.2 執行Jenkins的前提
1) 環境變數的設定(斜體為必選項):
a) JAVA_HOME,設定JDK的安裝目錄,建議採用JDK1.5以上
b) ANT_HOME,設定Ant的目錄,建議採用ant最新版本1.8
c) JENKINS_HOME,設定Jenkins的配置檔案目錄,預設為使用者的目錄,建議為Jenkins的安裝目錄,便於控制;
d) PATH,需要將java、ant的目錄配置到path目錄下;
e) CLASSPATH,需要將JDK的tools.jar配置到CLASSPATH下;
2) 其他外部條件(非必要)
a) 需要WebLogic923的遠端控制的jar檔案,檔案有weblogic_sp.jar、weblogic.jar、webservices.jar三個jar檔案,這三個檔案位於WebLogic安裝目錄的相對目錄server\lib下;
b) 將上述三個jar配置到系統的CLASSPATH環境變數中;
1)對於Jenkins.war安裝的情況,可以有兩種方法進行執行Jenkins;
a) 直接通過命令列
轉到Jenkins.war所在的目錄,當前為D:\Jenkins
java -jar Jenkins.war --httpPort=8080 –prefix=Jenkins
說明:httpPort為Jenkins執行的埠,預設埠為8080,上述命令其實Jenkins執行在Winstone容器中;
b) 在Web容器中執行
Jenkins可以執行在標準的Web伺服器中,支援Tomcat、Jboss、WebLogic中,只需要將Jenkins.war放置到相應目錄,啟動服務就可以進行訪問;
2)對於服務形式安裝的jinkens,預設開機後直接在位址列輸入http://localhost:8080即可進入其主頁;
Jenkins的基本設定都在系統的後臺設定中,類似於Windows的控制面板。
2.2.1 設定JDK(系統管理->GlobalTool Configuration)
2.2.2 設定ANT(系統管理->GlobalTool Configuration)
可以在這裡進行ANT_HOME設定,假如系統已經設定了ANT_HOME,可以不需要再進行配置,同時可以讓Jenkins安裝一個最新的ANT。
備註:為了讓配置更加簡單,建議在系統級設定JAVA_HOME和ANT_HOME,便於系統的遷移。
2.2.3 配置郵件資訊(系統管理->系統設定)
系統能夠在執行計劃完成後傳送結果郵件,需要配置郵件伺服器的相關資訊:
上面還需要配置Jenkins的URL地址,作為後期訪問地址,一旦設定URL,就不要輕易修改。
在Jenkins主選單點選“新建任務”,出現下圖:
鍵入任務名稱,選擇“構建一個自由風格的軟體專案”選項,點選“OK”按鈕後,出現下面的介面:
說明:
a) 專案名稱(Projectname):專案(任務)名稱不能重複,後面通稱任務;
b) 描述(Description):,主要對任務進行簡要說明;
c) 丟棄舊的構建(Discardold builds):是否保留過去的構建,預設是保留。(幫助:這裡控制著您想要在Jenkins所在的磁碟把構建記錄儲存的有效期(諸如控制檯輸出、編譯構件等等)。Jenkins為此提供了兩個標準:1。時間驅動。在Jenkins中您可以判斷如果達到一定時限來刪除一條記錄(例如,七天前)。2。數量驅動。在Jenkins中您可以確保它擁有N份構建。如果又有新的構建開始,最早的那份(記錄)就將被刪除。Jenkins也可以讓您建立的個別構建定義為'永遠保持這個記錄',以便防止某些重要的構建被自動丟棄。)
d) 引數化構建過程(Thisbuild is parameterized): 如果選擇此選項,Jenkins將允許您提供一套任意的鍵值對引數,它們會被傳遞到構建過程裡。配置的引數往往是構建執行環境中的一些環境變數。(幫助:當您使用了Jenkins的各種自動化,有時要求在構建過程中提供一組使用者的輸入,使用“parameterize”就能夠更方便構建。例如,您可能會設立一個按需測試,在那裡使用者可以提交一個二進位制檔案的壓縮檔案來進行測試。
e) 關閉構建(DisableBuild):禁止此任務進行構建,預設是不禁止;
f) 在必要時併發構建(Executeconcurrent builds if necessary)
g) Advanced Project Options
1) Quiteperiod:構建前等待時間;
2) RetryCount:從SCM倉庫中取出嘗試時間;
3) Blockbuild when upstream project is building:假如上一個仍在構建過程中,停止本次構建任務;
4) Usecustom workspace:指定當前任務的workspace,否則預設為JENKINS_HOME的工作目錄
h) Source Code Management:指定編譯原始碼的獲取方式:
1) None:手動方式;
2) Git:從Git倉庫中獲取;
3) SVN:從SVN倉庫中獲取;
a) Builds Triggers:設定構建觸發器
1) 觸發遠端構建
2) Buildafter other projects are built:設定構建的流水線,配置在設定的任務構建完成後自動構建此任務,進行設定後,可以在任務統攬中看到以下“下游專案說明”(操作步驟略)
1) Build peridically
2) Github hook trigger builds remotely (e.g., fromscripts):設定遠端觸發進行任務構建;
3) Build periodically:設定構建頻率,設定跟QuartzCronTrigger設定雷同;
4) PollSCM:設定從SCM庫中檢查原始碼是否更新:
備註:關於第五和第六兩點,基本配置為
分鐘 小時 天 月 星期
舉例: 每分鐘進行整合 * * * * *, 每5分鐘進行整合5 * * * *,每天12點和23整點進行整合 0 12,23 * * *
a) Build Environment:設定構建環境設定
1) Deleteworkspace before build starts
2) Abortthe build if it`s stuck
3) Addtimestamps to the Console Output
4) Usesecret text(s) of file(s)
b) Build:執行構建
構建支援6種方式,shell(運行於Linux環境)、Maven(支援Maven編譯)、Command(windows批處理命令)、Ant、EasyAnt、Export job runtime parameters。
舉例:
1) InvokeAnt:
備註:
Ø Targets主要是執行ant指令碼中哪幾個部分,可以新增多個;
Ø BuildFile:需要指定Ant指令碼的物理位置;
Ø Properties:新增Ant指定的屬性;
Ø JavaOptions:設定執行java時的屬性,例如記憶體、堆大小等;
2) ExecuteWindows batch command
備註:執行Windows的批處理命令,這裡不能利用Hodson設定的變數;
a) 構建後操作
1) PublishJavadoc:設定構建時產生JavaDoc時的檔案目錄;
2) Archivethe artifacts:設定構建後哪些檔案需要進行歸檔處理;
3) E-mailNotification:郵件提醒
備註:可以向多個人傳送郵件,通過“;”進行分割
4) StatusMonitor:構建狀態監控;
好,基本的配置到這裡結束,可以搭建一個新的任務進行構建了。
2.3.1 主控制面板
當配置完成一個任務後,回到主控制面板:
Ø 上圖中右邊列表列舉現在已經配置的任務已經任務當前的狀態
Ø 左邊有構建佇列,當有構件時,會把當前正在構建的佇列在上面進行列舉;
Ø 上圖右下角有RSS訂閱,支援訂閱全部、失敗和最後一次等;
當一個任務配置完成後,可以採用手動構建和觸發器構建兩種方式,在專案驗證階段,可以通過手動觸發方式,點選任務區的“立即構建”,會在BuildHistory中出現以下進度條:
點選進度條,可以進入到具體的編譯過程,例如下圖:
等構建完畢後,你可以看到最新任務構建的結果圖:
瀏覽任務的整體執行狀況入下圖:
最左邊列圖示為最後一次構建狀態,第二列圖示為整個任務的構建總體結果,具體如下表示。
Jenkins通過當前構建狀態和構建穩定新
Ø 當前構建狀態分為以下幾種
專案構建完成,同時被認為是穩定的 |
專案構建完成,但被認定為不穩定 |
構建失敗 |
作業已經禁止 |
Ø 構建穩定行,Jenkins會基於一些後處理器任務為構建釋出一個穩健指數(從0-100 ),越高越穩定
構建成功率>80% |
構建成功率60%-79% |
構建成功率40%-59% |
構建成功率20%-39% |
構建成功率0-19% |
期待任務編譯都處於和 狀態。