RF+Jenkins構建持續集成


引入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源碼是否發生變化)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM