二、Jenkins 學習筆記——Jenkins 安裝

Jenkins 的安裝非常簡單,只需要從 Jenkins 的主頁上(http://jenkins-ci.org/)下載最新的 jenkins.war 文件然後運行 java -jar jenkins.war。同時,還可以點擊 Jenkins 頁面上的 launch 按鈕完成下載和運行 Jenkins。

圖 1. Jenkins Launch 按鈕
圖 1. Jenkins Launch 按鈕

啓動 Jenkins 後,會有一個後臺進程在命令行模式下運行。此時在瀏覽器地址欄中打開 http://localhost:8080 就可以看到 Jenkins 的頁面了。Jenkins 的可貴之處在於具有非常高的可用性,從它的界面中能很輕鬆地完成各種配置,更多的配置和使用信息,可以在 Jenkins 的官方網站上查詢。

圖 2. 命令行模式下運行 Jenkins
圖 2. 命令行模式下運行 Jenkins
圖 3. Jenkins 主界面
圖 3. Jenkins 主界面

非常有趣的是,Jenkins 還提供了非常豐富的插件支持,這使得 Jenkins 變得越來越強大。我們可以方便的安裝各種第三方插件,從而方便快捷的集成第三方的應用。比如 Jenkins 提供了對於 IBM Rational ClearCase 的插件支持。

圖 4. Jenkins 可以集成 ClearCase 插件
圖 4. Jenkins 可以集成 ClearCase 插件

此外,Jenkins 提供了豐富的管理和配置的功能,包括系統配置、管理插件、查看系統信息、系統日誌、節點管理、Jenkins 命令行窗口、信息統計等功能。試試看,您就會發現 Jenkins 非常好上手使用。

圖 5. Jenkins 提供了豐富的管理功能
圖 5. Jenkins 提供了豐富的管理功能

基於 Jenkins 快速搭建持續集成環境

正如前文中所描述的那樣,一個持續集成環境需要包括三個方面要素:代碼存儲庫、構建過程和持續集成服務器。對 Jenkins 有了初步瞭解後,我們通過一個實例來集中展示如何快速搭建一個簡單的基於 Jenkins 的持續集成環境。

假設我們使用的代碼存儲庫是 IBM Rational ClearCase。Jenkins 提供了對 ClearCase 的插件支持,它能方便地讓我們連接到 Base ClearCase 或者 UCM ClearCase,使其成爲 Jenkins Project 的代碼控制器。另外,這個插件是基於 cleartool 命令的,所以必須在 Jenkins 的持續集成服務器上安裝 ClearCase 的客戶端程序。

在 Jenkins 的插件管理界面中選擇 ClearCase Plugin,點擊頁面下方的 Install 按鈕。

圖 6. 選擇 ClearCase 插件
圖 6. 選擇 ClearCase 插件

在打開的頁面中提示安裝完成後,Jenkins 需要重新啓動來激活這個插件。重新執行 java -jar Jenkins.war 後,在 Jenkins 的頁面中,我們就能看到 ClearCase plugin 已經被安裝到 Jenkins 了。

圖 7. ClearCase 插件安裝成功
圖 7. ClearCase 插件安裝成功

類似 IBM Rational ClearCase,SVN(subversion)是目前比較流行的版本管理工具。很多開源軟件都是用 SVN 作爲代碼版本管理軟件。爲了讓實例更具有代表性,本文中我們使用 SVN 作爲代碼存儲器。

接下來,我們開始新建一個 Jenkins 項目, 由於我們需要連接 SVN 的代碼存儲器, 我們選擇 Build a free-style software project。

圖 8. 新建 JenkinsTest Job
圖 8. 新建 JenkinsTest Job

然後我們就可以很方便的配置這個 JenkinsTest 項目了。Jenkins 很人性化的一點是在每個配置項的右側都有一個幫助的圖標,點擊這個圖標,Jenkins 會告訴您如何配置這個配置項。

圖 9. 配置 JenkinsTest
圖 9. 配置 JenkinsTest

根據實際的 SVN 服務器服務器信息配置 Source Code Management,這能讓 Jenkins 知道如何從哪裏獲取最新的代碼。本例中假設 Repository 就在本地。

圖 10. 配置連接到 SVN 服務器
圖 10. 配置連接到 SVN 服務器

根據開發需要,假設每一個小時我們需要重新構建一次。選擇 Build periodically,在 Schedule 中填寫 0 * * * *。

第一個參數代表的是分鐘 minute,取值 0~59;

第二個參數代表的是小時 hour,取值 0~23;

第三個參數代表的是天 day,取值 1~31;

第四個參數代表的是月 month,取值 1~12;

最後一個參數代表的是星期 week,取值 0~7,0 和 7 都是表示星期天。

所以 0 * * * * 表示的就是每個小時的第 0 分鐘執行一次構建。

圖 11. 選擇如何觸發構建
圖 11. 選擇如何觸發構建

接下來就是要添加 build 的步驟了。Jenkins 提供了四個選項供我們選擇,可以根據需要執行或調用外部命令和腳本。

圖 12. 四種 build step 供選擇
圖 12. 四種 build step 供選擇

在本例中,我們通過調用和執行 Windows batch command,將 SVN repository 中 Java 代碼編譯並生成 Jar 文件。也可以根據項目的實際編寫自己的 shell 腳本配置在這裏。

圖 13. 配置 Execute Windows batch command
圖 13. 配置 Execute Windows batch command

選擇和配置其他的選項,比如郵件提醒,然後點擊 save 保存。

圖 14. 配置郵件提醒
圖 14. 配置郵件提醒

接下來的每小時的第 0 分鐘,JenkinsTest Job 就會被構建。我們可以在 Jenkins 中觀察構建的進度和最終的狀態——成功或者失敗。太陽代表之前的構建沒有任何失敗,藍色的小球代表構建成功。

圖 15. JenkinsTest 開始構建
圖 15. JenkinsTest 開始構建

同時我們可以點擊 JenkinsTest 查看單次構建的 Console 的輸出結果。從中我們能看到構建的第一步是從 SVN 服務器上 check out 代碼,然後調用我們先前配置的 Windows batch command。

圖 16. JenkinsTest 構建的 console 輸出
圖 16. JenkinsTest 構建的 console 輸出

最後,我們可以看到 build 的最後結果 Success,表明本次構建成功。

圖 17. 構建成功的 Console 輸出
圖 17. 構建成功的 Console 輸出

接下來我們再次新建一個 Jenkins 的 Job,用於將生成的 build 分發到不同的節點上。這次 build triggers 我們選擇 Build after other projects are built,讓這個 Job 在 JenkinsTest 成功 build 後觸發。這樣一來就能達到我們自動 build 和自動分發的功能。

圖 18. 新建 Distribute job
圖 18. 新建 Distribute job

不同的是,這次我們選擇調用 Ant 腳本來完成分發的工作。只需要將 Ant 腳本的 XML 的文件配置在 Targets 中供 Jenkins 調用。

圖 19. Distribute 調用外部 Ant 腳本
圖 19. Distribute 調用外部 Ant 腳本

然後我們就可以在 Jenkins 中觀察構建的狀態了。一旦構建失敗我們能看到相應的警示圖標,同時,如果配置了郵件提醒,相關人員也會受到郵件。記住我們先前所提醒的那樣,分析和處理構建的失敗是優先級最高的工作。接下來,我們還可以加入更多的 Jenkins 項目來實現自動化測試等功能,讓持續集成更方便有效地服務於項目開發。

圖 20. 查看持續集成狀態
圖 20. 查看持續集成狀態

結束語

本文簡單介紹了持續集成的概念並着重介紹瞭如何基於 Jenkins 快速構建持續集成環境。通過具體實例的描述,相信讀者對 Jenkins 的基本功能和實現方法有個更清楚地認識和理解。其實,Jenkins 的功能遠不至文中所述的這些,Jenkins 還有詳盡的日誌處理和持續集成構建狀態的分析等功能。希望在進一步的學習和應用中與大家分享。

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