1. 程式人生 > 實用技巧 >持續整合和 Jenkins

持續整合和 Jenkins

持續整合

官方術語:

持續整合(Continuous Integration),也就是我們經常說的 CI
持續整合(CI)是一種實踐,可以讓團隊在持續的基礎上收到反饋並進行改進,不必等到開發週期後期才尋找和修復缺陷。

持續整合流程

在軟體的生命週期過程中,從需求,到實現,到測試,到使用者手中,是一個持續的過程。

在這個過程當中,不止是開發工作,有很多的環節都可以利用自動化的手段去持續的定期的執行任務,來提升整體的軟體質量和效率。

下圖為我畫的在軟體生命週期過程中,開發人員和測試人員和配置管理人員的流程圖。

圖中紅色字型部分均是可以持續定期的去執行。

將上圖中的內容綜合一下,那麼我們可以得到下圖的持續整合流程。

Jenkins

一款持續整合工具,可以在 jenkins 當中完成以上持續整合流程中的每一個環節。

jenkins 中有 3 大重要概念:

1、Job(任務/工程)
在 jenkins 平臺中,都是以 Job(任務/工程)為單位去完成一件事情的。

在使用jenkins時,都是會在jenkins管理介面當中建立一個job/item。在job/item中來組織任務。

2、plugin(外掛)
jenkins 提供平臺,整合各種外掛來完成一個 Job。想用 jenkins 平來做什麼,先找找有沒有相應的外掛。
比如:windows 命令、Linux 命令的支援、SVN 和 Git 程式碼獲取、郵件傳送,測試報告整合等都需要安裝相應的外掛才能夠在 jenkins 當中使用這些功能。

3、workspace(工作空間)
jenkins 是通過檔案形式來儲存和管理資料的。

所以,在安裝jenkins,要指定一個Jenkins_Home目錄。所有jenkins相關的資料都存放在此目錄下。 workspace即給jenkins指定一個專門的目錄來儲存其所有的配置和資料。 jenkins的workspace是根目錄 ,其下每個Job都有屬於自己的workspace。 每個job的workspace當中用來存放本任務涉及到的資料/檔案,以及任務執行完成後生成的資料/檔案。 相當於,給每一個job開闢了一個獨立的資料夾。

4、jenkins 管理(Jenkins Manager)


整個 jenkins 的全域性配置。
包括許可權管理、外掛管理、節點管理等。

在 Jenkins 當中要完成一個任務,首先要建立一個 Job/Item。

通過配置 Job/Item,來配置任務的觸發條件、任務的程式碼從哪獲取、任務的執行過程涉及哪些步驟、任務執行完成之後要做哪些通知/展示工作。

一個 Job/Item 的配置項如下:

1、基本資訊配置(General)
Job 名字、指定當前 Job 的工作空間、指定當前 Job 繫結到哪個執行機上執行等。。。

2、原始碼管理(Source Code Management)
svn/git 等,需要相應的外掛支撐。
配置好原始碼管理後,在執行 Job 時會自動從相應的原始碼庫裡下載程式碼到當前 Job 的工作空間中。

3、構建觸發器(Build Triggers)
觸發器:執行當前任務的條件。
常用定時構建:類似 windows/linux 的定時任務。指定當前 Job 執行的時間。

定時任務配置規則如下:

首先,一共有 5 個配置選項(每個選項之間用空格隔開),分別是:

MINUTE(分鐘) HOUR(小時) DOM(每月的天數) MONTH(一年的月份) DOW(每週的天數)

MINUTE(分鐘): 指一小時內的分鐘數。有效值為:0-59

HOUR(小時):指一天內的小時數。有效值為:0-23

DOM(每月的天數):指一個月內的天數。有效值為:1-31

MONTH(一年的月份):指一年當中的月份數。有效值為:1-12

DOW(每週的天數):指一週當中的天數。有效值為 0-7。0 和 7 都表示週日。1-6 分別表示週一到週六。

支援以下操作:

  • *****表示匹配所有有效值。
  • M-N 表示一個連續的有效值範圍。比如在 DOW 中用 1-5,表示取週一到週五。
  • M-N/X 或者 */X 表示以 X 為步長,取指定連續範圍或所有有效值範圍內的值。比如在 DOW 中用 1-5/2,表示取週一,週三,週五。
  • A,B,.....Z 表示列舉。比如在 DOW 中用 1,2,6,表示取週一,週二,週六。

示例:

每週一、三、五,每天上午 10 點整,自動觸發任務的執行。

定時配置如下:0 10 * * 1,3,5

MINUTE(分鐘): 值為 0。

HOUR(小時):值為 10

DOM(每月的天數):值為* 沒有指定一個月當中,只有哪幾天執行。所以用*匹配所有有效值。

MONTH(一年的月份):值為* 沒有指定一年當中,只有哪個月執行。所以用*匹配所有有效值。

DOW(每週的天數):值為 1,3,5。用列舉方式。因為即不是所有值,也不是連續的有效值。

4、構建(Build)
此一步是用來實現所有你想用此 Job 做的事情。
新增構建步驟:按順序執行構建步驟。

構建步驟的下拉列表選項多少,由 jenkins 中已安裝的相關外掛決定 。因為許多功能都是由外掛來支撐的。

5、構建後行為(Post-build Actions)
此一步主要在任務執行完成之後,要做的事情。
比如要傳送郵件、要展示任務執行的結果。
方式與 4 中一樣,都是選擇相應的外掛功能。

構建後操作步驟的下拉列表選項多少,由 jenkins 中已安裝的相關外掛決定 。因為許多功能都是由外掛來支撐的。

任務配置完成之後,點選 立即構建 ,測試任務在執行時是否有錯誤。