1. 程式人生 > >Jenkins全流程搭建

Jenkins全流程搭建

第 1 章 概 述

 持續整合(CI)是一種實踐,旨在緩和和穩固軟體的構建過程。持續整合最早由Martin Fowler 於10年前已經提出,希望通過持續整合能夠實現以下過程:

Ø  任何人在任何地點,任何時間可以構建整個專案。

Ø  在持續整合構建過程中,每一個單元測試都必須被執行。

Ø  在持續整合構建過程中,每一個單元測試都必須通過。

Ø  持續整合構建的結果是可以釋出的軟體包。

Ø  當以上任何一點不能滿足時,整個團隊的主要任務就是去解決這個問題。

Jenkins是一個軟體界非常流行的開源CI伺服器,下面主要做一些基礎介紹。


第 2 章 基礎篇

2.1.1 資源下載

首先從http://Jenkins-ci.org/

下載Jenkins的安裝版本。雙擊安裝檔案進行安裝(不推薦jar包形式安裝);

另外,還需要下載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,需要將javaant的目錄配置到path目錄下;

e)        CLASSPATH,需要將JDK的tools.jar配置到CLASSPATH下;

2)        其他外部條件(非必要

a)        需要WebLogic923的遠端控制的jar檔案,檔案有weblogic_sp.jarweblogic.jarwebservices.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%

期待任務編譯都處於和 狀態。