開發人員學Linux(11):CentOS7安裝配置持續集成工具Jenkins

1.前言

在上一篇講述瞭如何在CentOS7中安裝並使用代碼質量管理平臺SonarQube6.4,在上一篇中講到了SonarQube支持多種方式來分析代碼質量,其中有一種方式之一就是在持續集成工具中來自動完成代碼質量分析,本篇就是繼續上一篇來講述如何安裝並使用Jenkins。Jenkins的前身是Hudson,在寫作本文時Jenkins的最新版本爲2.84.

2.準備

軟件準備:

jenkins.war:Jenkins的部署文件,下載地址:http://mirrors.jenkins.io/war/2.84/jenkins.war

Microsoft Build Tools 2015:無需安裝VisualStudio,僅安裝本軟件即可使用MSBuild來編譯Visual Studio創建的項目文件或解決方案文件,下載地址:https://www.microsoft.com/en-us/download/details.aspx?id=48159

3.安裝

由於是直接下載的war文件,所以無需編譯,只需將其放在Java的Web容器下即可。因在本系列中已經安裝配置過Tomcat8.5,並且Tomcat的工作路徑爲:/usr/local/apache-tomcat-8.5.15/,因此jenkins.war放入/usr/local/apache-tomcat-8.5.15/文件夾,然後在瀏覽器中訪問即可。

本人的CentOS7虛擬機IP爲192.168.60.198,因此在外部可以通過網址http://192.168.60.198/jenkins/訪問,以下是訪問界面:

696b8c7d3c22e40d3a02a733f7936c68.png-wh_

打開/root/.jenkins/secrets/initialAdminPassword將文件中內容複製到文本框中然後繼續,如下圖所示:

e88dc8372ad27815e25d53a3249fd96d.png-wh_

這裏選擇安裝建議插件,選擇後如下圖所示:

2bd92d3182055ddc919e7c8c8289f5d8.png-wh_

這個安裝過程視網絡情況而定,個人感覺如果是在美國的週末時間會比較快,而在美國的工作日的白天下載速度很超級慢。

建議插件安裝完成之後,出現創建管理員的界面,如下圖所示:

4316904b8ac21a5c4033abdc02c752f7.png-wh_

輸入賬戶信息即可完成Jenkins的安裝和第一個管理員的設置。

注意:點擊“Continue as admin”鏈接則跳過管理員設置,管理員賬戶爲“admin”,管理員密碼爲/root/.jenkins/secrets/initialAdminPassword中的內容;點擊“Saveand Finish”則保存當前頁面填寫的內容。

 

4.配置

4.1插件配置

Jenkins提供了相當多的插件以支持各種複雜場景,從“Jenkins– 系統管理 – 管理插件”中即可看到已安裝和可安裝的插件,如下圖所示:

 7f010776b08efe1524015673f5bd030e.png-wh_

爲便於演示,這裏以本人在開源中國上的git版本庫作爲演示。

4.2配置MSBuild

爲了演示Jenkins對.NET項目的支持,這裏我在開源中國上創建了一個.NET項目,網址是:https://gitee.com/zhoufoxcn/GoodAppCodeMaker.git,如果持續集成項目中有.NET項目,建議在Windows上安裝Jenkins。安裝過程和在CentOS7上一樣。

點擊在上一張圖片中所示的“全局工具配置”鏈接,找到MSBuild節點,如下圖所示:

9638f13de9994e67d58d74895fd295c5.png-wh_


我使用的VS2015,所以MSBuild的版本是14.0。如果不想完整安裝Visual Studio,可以安裝MSBuild Tool,在這裏我安裝的就是Microsoft Build Tools 2015,下載地址爲:https://www.microsoft.com/en-us/download/details.aspx?id=48159

安裝後的路徑就是C:\Program Files (x86)\MSBuild\14.0,MSBuild.exe所在路徑爲:C:\ProgramFiles (x86)\MSBuild\14.0\Bin,也就是上圖中“Path to MSBuild”一欄中的值。

4.3配置Maven

爲了演示Jenkins對Java項目的支持,在這裏使用我在開源中國上的一個項目,網址是:https://gitee.com/zhoufoxcn/CodeGenerator.git,這個Java項目使用了Maven。所以需要下載Maven,下載網址爲:http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz,將下載下來的壓縮包文件解壓到一個路徑下,然後記住這個路徑,下面馬上會用到。

點擊在上一張圖片中所示的“全局工具配置”鏈接,找到Maven節點配置相關信息,如下圖所示:

39b00b402f6f98a9f8c2fcb7233f13cb.png-wh_

上圖中“MAVEN_HOME”一欄的值即爲解壓後Maven的路徑。搞過Java的朋友都知道,Java中會經常使用環境變量存儲一些工作路徑,如JAVA_HOME、CLASSPATH、CATALINA_HOME等。

5.檢驗配置

爲了驗證我們的配置能夠正常工作,這裏以剛剛提到的兩個項目來驗證(其實本來還想提一下.net core2.0的項目的,這類項目可以在Linux下運行,後來想想和Java項目類似就沒有再囉嗦了)。

兩個示例項目的git版本庫地址:

CodeGenerator :https://gitee.com/zhoufoxcn/CodeGenerator.git,使用了Maven的Java項目。

GoodAppCodeMaker :https://gitee.com/zhoufoxcn/GoodAppCodeMaker.git,使用VS2010開發的C#項目。

 

創建一個持續集成項目分General(通用)、源碼管理、構建觸發器、構建環境、構建和構建後操作六個部分。充分利用好這幾個部分,可以實現很多強大的功能,並且還省了不少精力。

5.1創建Java項目的持續集成項目

在首頁點擊“新建”鏈接,如下圖所示:


1ceebffa6782874a90c00d9ad5b9e315.png-wh_


選擇“構建一個自由風格的軟件項目”,然後填寫項目的名稱,點擊“OK”後出現如下界面:

a2e998a4200398503b5fddd7474a6ce4.png-wh_


General部門一般情況下沒有太多需要注意的,填寫一些用於識別和描述的信息之後即可設置源碼管理部分。


Jenkins支持常見的源代碼管控系統,如CVS/SVN/Git等。由於示例項目使用了git作爲源代碼管控工具,所以需要填寫相關的信息,如git版本庫地址、認證信息、源代碼分支信息。第一次使用的時候因爲沒有版本庫認證信息,需要創建,點擊“Credentials”旁邊的“Add”按鈕,如下圖所示:

f3a5a9318946b0c800a8bd6ec7639b3f.png-wh_


下圖是我爲開源中國創建的Git認證憑據截圖:

e52e1facebd8dd136a932ca4c8e017c8.png-wh_


在本項目中構建觸發器和構建環境中沒有特別設置,如下圖所示(在某些項目中可能會要求每次提交代碼後就編譯項目或者每天定時編譯項目,都可以在構建觸發器中設置):

c4380fcffeec443f81190ebb50135755.png-wh_


然後設置構建相關的參數,比如選擇我們配置好的Maven及指定Maven的goals,如下圖所示:

855e7a91c487cd3d17a79445972900ad.png-wh_

5.2創建C#項目的持續集成項目

創建C#的持續集成項目和創建Java的持續集成項目沒有太大的區別,比如在源代碼管理部分除了git版本庫URL不一樣之外,重用了身份憑據信息,如下圖所示:

3b655969e2ffa0bba6ab27db053c5965.png-wh_


此外,因爲編譯Java和C#兩種不同語言的項目方式不同,所以在構建節點有些不太一樣。在這裏選擇的是MSBuild,同時需要制定編譯時的項目文件,基於解決方案或是基於項目編譯均可,本人這裏選擇是編譯整個解決方案,即“MSBuild Build File”來指定,同時用“Command Line Arguments”來指定編譯時的參數,這個可以在命令行下查看MSBuild支持哪些參數,分別有什麼意義。

baebadf36fc3ffe16922b286c6f0a918.png-wh_

 

至此,創建了兩個持續集成項目,在系統開始頁面即可看到剛剛創建的項目,點擊最右側的圖標即可立即構建項目。

這裏需要說明的是如果C#項目使用了NuGet或者Java項目使用了Maven,請確保安裝了Jenkins的服務器能夠下載項目引用的dll或者Jar,否則會構建失敗。

fb892f0149169560b55f3e1cd6e20ef0.png-wh_


點擊Jenkins系統左側的“任務歷史”鏈接,可以查看歷次以來的構建情況,如下圖所示:

2c78c3f2cd97ef982bdd6b2971207c8b.png-wh_


如果某次編譯出戳,可以點擊該次構建右側的圖標查看控制檯輸出(上圖中用紅色箭頭標識),界面如下圖所示:

cdd33ae393820922cd5df98b01acf287.png-wh_


看上圖就是因爲Maven沒有配置好導致無法編譯。

 

另外,在Linux中/{User_Name}/.jenkins/這個目錄會保存很多Jenkins的一些中間過程信息(如果在Windows系統中則爲C:\Users\{User_Name}\.jenkins\,{User_Name}爲登錄到系統中的名字),比如在Jenkins中遷出後會保存到/{User_Name}/.jenkins/workspace/中(Windows中對應爲C:\Users\{User_Name}\.jenkins\workspace\),如果是jar或者exe文件可將其複製到/{User_Name}/.jenkins/userContent/中(Windows中對應爲C:\Users\{User_Name}\.jenkins\userContent\),這樣虛擬機就可以通過http://192.168.60.168:8080/jenkins/userContent/來訪問(虛擬機內部則爲:http://localhost:8080/jenkins/userContent/)。

6.總結

本文講述瞭如何使用Jenkins來對項目持續集成,分別以Java和C#兩類常見的項目類型做了演示。由於時間關係,僅僅簡單講述瞭如何配置和創建基本的持續集成項目。其實利用Jenkins除了上面演示的功能之外,還可以在構建完成後將失敗或者成功的消息發郵件通知到相關人員,甚至自動部署到服務器(一般是部署到測試環境供QA測試,直接發佈到正式服務器還是要慎重一點)。

 

周金橋

2017/10/15


聲明:本文首發於本人個人微信訂閱號:zhoujinqiaoIT,其後會同時在本人的CSDN、51CTO及oschina三處博客發佈,本人會負責在此四處答疑。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章