RF+Jenkins構建持續整合

狂師發表於2019-05-10

引入RF是為了能夠快速的開展自動化驗收測試,Jenkins而一種持續整合工具,用於監控持續重複的工作,持續的軟體版本釋出/測試專案,而通過RF+Jenkins可以有利的對RF構建的介面專案進行持續整合測試。Jenkins另一個強大之處就是它的分散式構建(在Jenkins的配置中叫做節點),分散式構建能夠讓同一套程式碼在不同的環境(如:Windows和Linux系統)中編譯、測試等。而且Jenkins構建的程式碼和產物最後自動拷貝到主節點。

簡單概括而言,結合RF+Jenkins開展持續整合基本步驟:

1、安裝Jenkins

2、新增節點

3、安裝RobotFramework外掛

4、配置Job執行測試任務

本章節對於Jenkins如何搭建,RobotFramework外掛如何安裝,不作描述,內部組員可利用現有已搭建好環境,配置所需Job執行測試即可。

1.1  Jenkins普通任務配置

一、新增節點

啟動Jenkins服務的這臺機器在Jenkins裡叫做master,而其他的連到master上的機器(物理機、虛擬機器都可以)都是slave,也叫節點。

1、系統管理→管理節點→新建節點(左上角)

 

 

節點名稱:建議使用字母、數字或字母和數字的組合。最好見名知意。不建議使用標點符號和中文(中文命名沒有問題,但Job中無法引用)

Dumb Slave新建一個節點

複製現有節點:從已存在的節點中複製一份配置(如果存在節點才會顯示)

注:這是靜態連線的方式,就是先設定好節點,由slave自己去連master作為這個節點。

2、輸入Slave名字,點確定,進入下一步:

 

針對上圖一些特殊配置項,進行一些說明:

# of executors表示在slave上可以並行執行幾個執行緒,即最大同時構建數量(根據機器的效能定,單顆四核cpu建議不要超過5)對於RF來說,建議設定為1

遠端工作目錄:節點的根目錄,即在slave上建立jenkins工作目錄的路徑,如設定為D:JK(注意:如果目錄不存在,會自動建立目錄。你必須對該目錄有讀寫許可權,不然會報錯:hudson.util.IOException2: Failed to copy xxxx)

標籤:可以給slave加上一個或多個標籤,通過標籤選擇slave,用來對多節點分組,標記之間用空格分隔.例如`slave1 slave2`將會把一個節點標記上slave1slave2

啟動方法:啟動slave的方法,推薦選第二個Launch slave agents via Java Web Start

注意:如果是用來執行RF自動化測試案例的slave,嚴禁選擇windows service的方式,否則後果自負。

3、 點選儲存,進入下一步

 

如上圖所示,有兩種方式可以啟動節點(都是JNLP方式。JNLP連線需要埠,預設連線埠是隨機的,埠更改 系統設定→Configure Global SecurityJNLP節點代理的TCP)

兩種方式啟動如下:

1.Launch agent from browser on slave  下載檔案slave-agent.jnlp檔案,雙擊開啟。

一般用在Windows系統上,需要javaws.exe(Javabin目錄中可以找到)程式才能開啟。如果提示錯誤,請解除安裝JDK後重新安裝。成功啟動如下圖所示:

 

點選左上角的File選擇Install as a service就可以新增為Windows的服務了(預設開機自動啟動)

2.Run from slave command line   java -jar  http://xxxx/slave-agent.jnlp  如果你配置了許可權那麼後面還有一串看不懂的隨機Key 

下載slave.jar到本地,然後進入存放slave.jar的目錄,複製貼上並執行 java -jar slave.jar -jnlpUrl http://xxxxx  即可啟動。

注意:如果節點主機上不存在JDKJenkins會去自動下載,但Oracle對程式自動下載做了限制,會導致下載失敗,然後一直迴圈這個問題。(所以執行節點的主機建議在執行前,將所需環境搭建完整)

 

二、配置執行Job任務

1、進入首頁,點選新建任務

 

對於RFJob來說,自由風格就可以了。多配置也可以,只不過多配置的略有不方便,看各自需要吧,比如你要把一套案例在多個不同配置的slave上執行,就可以用多配置的Job

2、選擇自由風格,點選OK,進入下一步:

 

 

可配置選項很多,這裡就介紹幾種常用的配置項:

A .Restrict where this project can be run: 前面的標籤就在這裡用上了。用來指定這個Job在哪個標籤的slave上執行

B.原始碼管理:RF的案例原始碼管理,部門內部請選用GitLab

C.構建:我們要增加構建步驟-Execute Windows batch command,如下寫個簡單的命令,完整命令列引數大家自己在命令列輸入pybot.bat –help來看

 

D.構建後操作:我們要增加構建後步驟-Publishes Robot Framework test results,第一個output預設可以為空,如果前面的pybot.bat指定了輸出目錄,那麼這裡也要對應進行設定,否則他找不到output.xml就沒法解析結果了。

 

3、儲存Job,點選立即構建,執行任務

可以點構建的進度條直接看到控制檯輸出,或者在點構建的名字在選單裡找控制檯輸出看結果,如下所示:

 

RF外掛作用:主要用瞭解析RF執行後的output.xml檔案,將解析的結果展示出來。

1.2  Jenkins定時任務配置

上述簡述瞭如何配置一個普通的Jenkins Job任務,但此型別任務需人工的手動去執行構建操作,而Jenkins也可以配置定時任務,從而讓我們配置好的JOB在我們指定的時間去自動執行,下述講述如何配置Jenkins定時任務。

1、新增節點,配置Job等方法,步驟,如4.1章節所示。

2、在配置Job時,其中有一個構建觸發器的選項,如圖所示:

 

如上述,選擇build periodly(即週期構建),如上圖表示每天2:00 自動構建一次。

日程表格式:用 cron 格式,五個空格隔開的字元組成,分別表示分 時 天 月 年,*表示所有

10 1220 * * *表示的就是每天的12點和20點執行一次構建

2*/5 * * * * 表示每5分鐘執行一次構建

30 2 * * * 表示每天2點執行一次構建

3、通過增加build periodly選項,就可完成自動構建任務。

1.3  Jenkins郵件傳送配置

在上一章節中,當我們配置了自動構建專案,為了可以及時知道構建結果,這裡我們介紹如果當構建專案後,如何自動將構建後的結果以郵件的形式通知到指定人員。

這裡介紹兩種Jenkins郵件通知方法:

一、Jenkins內建郵件功能:

1、配置系統管理員郵件地址(即設定傳送者的郵箱地址)

進入Jenkins首頁–>系統管理–>系統配置頁面,在Jenkins Location位置,配置系統管理員郵箱地址,如下圖所示:

 

2、配置郵箱SMTP

通過“系統管理”“系統設定”,進行系統設定介面,移動到設定頁面的最下面,“郵件通知”部分,配置stmp伺服器地址和使用者預設郵件字尾,使用者名稱,密碼等,如圖

 

注:在系統管理員那個地方設定的email地址要和email配置的相同

3、測試地址正確性

 可以勾選 “通過傳送測試郵件配置”測試此配置能否連通。

4、對構建的Job配置郵件傳送

在配置job任務時,新增構建後步驟“E-mail Notification”,如下圖:

 

 在Recipients中輸入接收者的郵箱地址,這樣每次build後都會傳送郵件給這個接收者, 這種內建郵件通知功能,只能發給 固定的物件,且格式單一(txt)。

 

二、使用外掛 “Email Extersion Plugin”進行擴充套件

1成功安裝了Jenkins Email Extension Plugin,在郵件通知的上面,按需配置:

 

上述常用欄位解釋如下:

Default Recipients自定義預設電子郵件收件人列表。如果沒有被專案配置覆蓋,該外掛會使用這個列表。您可以在專案配置使用$ DEFAULT_RECIPIENTS引數包括此預設列表,以及新增新的地址在專案級別。新增抄送:cc:電子郵件地址例如,CC:someone@somewhere.com

Emergency reroute如果這個欄位不為空,所有的電子郵件將被單獨傳送到該地址(或地址列表)。

Excluded Committers防止郵件被郵件系統認為是垃圾郵件,郵件列表應該沒有擴充套件的賬戶名(:@domain.com),並且使用逗號分隔

 Default Subject自定義郵件通知的預設主題名稱。該選項能在郵件的主題欄位中替換一些引數,這樣你就可以在構建中包含指定的輸出資訊。

Maximum Attachment Size郵件最大附件大小

 Default Content自定義郵件通知的預設內容主體。該選項能在郵件的內容中替換一些引數,這樣你就可以在構建中包含指定的輸出資訊。

 

2、外掛用於job配置頁面,新增構建後步驟“Editable Email Notification

 

其它各常用欄位屬性,在此不再作過多解釋,如想了解,請自行度娘。

 

3、預設情況下,是沒有配置的觸發器,所以預設情況下不會傳送郵件。請點選”高階”按鈕。該選項允許您各種型別的郵件觸發器指定接收者。要增加更多的觸發器,選擇“Add a Trigger”旁邊下拉選單中的型別,它會增加到控制元件上面的列表中。如下圖:

 

 

4、至此, 郵件配置完成。

 

1.4  Jenkins程式碼檢查配置

此章節主要介紹,利用jenkins配置定時檢測git遠端倉庫是否有程式碼checkin,若有則觸發進行構建並執行RF 命令,最終在jenkins中生成report,且email通知你構建結果, 從而實現了持續整合。

1、安裝Git plugin ,進入“系統管理”→ “外掛管理”切換到Available tab, 選擇GitpluginGitLabPluginGitClientPlugin,如果你的git倉庫是private的還需要安裝SSHSlavesplugin , SSHCredentialsPlugin 

2、配置Git安裝路徑,嚴格來講應該也需配置JDK路徑,但筆者除錯時,未配置JDK,也可正常,故配置JDK暫略,方法一樣,Git路徑配置如下:

3Git帳號配置(這步應該可以省略):

4、配置Job任務,原始碼管理選擇git,填寫“Repository URL ”,並加上相應的“Credentials ”,其中認證資訊用私鑰的話乾脆直接把私鑰內容填上去就行了,省的不知道目錄查詢規則還不知道出的啥問題,如下圖所示:

 

注意:私有專案在認證時一定選擇SSH Username with private key,公鑰配置在git端的專案裡的public keys.私鑰配置在jenkins裡即可.直接輸入私鑰,要完整複製 ~/.ssh/id_isa裡面的內容。如果是公有專案,在認證時,可以選擇使用者名稱密碼認證的方式。

5、 構建觸發器:可以通過Poll SCM來設定定時檢查編譯功能

Poll SCM:定時檢查原始碼變更(根據SCM軟體的版本號),如果有更新就checkout最新code下來,然後執行構建動作。

比如*/5 * * * * 就是每隔5分鐘檢查一次,如果git倉庫中有更新,則執行build操作。
如圖所示:

 

注:Build periodically也是週期進行專案構建(但它不care原始碼是否發生變化)

技術改變世界!
–狂詩絕劍


相關文章