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'將會把一個節點標記上slave1和slave2。
啟動方法:啟動slave的方法,推薦選第二個Launch slave agents via Java Web Start
注意:如果是用來執行RF自動化測試案例的slave,嚴禁選擇windows service的方式,否則后果自負。
3、 點擊保存,進入下一步
如上圖所示,有兩種方式可以啟動節點(都是JNLP方式。JNLP連接需要端口,默認連接端口是隨機的,端口更改 系統設置→Configure Global Security→JNLP節點代理的TCP端口)
兩種方式啟動如下:
1.Launch agent from browser on slave 下載文件slave-agent.jnlp文件,雙擊打開。
一般用在Windows系統上,需要javaws.exe(在Java的bin目錄中可以找到)程序才能打開。如果提示錯誤,請卸載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 即可啟動。
注意:如果節點主機上不存在JDK,Jenkins會去自動下載,但Oracle對程序自動下載做了限制,會導致下載失敗,然后一直循環這個問題。(所以運行節點的主機建議在運行前,將所需環境搭建完整)
二、配置運行Job任務
1、進入首頁,點擊新建任務
對于RF的Job來說,自由風格就可以了。多配置也可以,只不過多配置的略有不方便,看各自需要吧,比如你要把一套案例在多個不同配置的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 格式,五個空格隔開的字符組成,分別表示分 時 天 月 年,*表示所有
例1:0 12,20 * * *表示的就是每天的12點和20點執行一次構建
例2:*/5 * * * * 表示每5分鐘執行一次構建
例3:0 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, 選擇Gitplugin、GitLabPlugin、GitClientPlugin,如果你的git倉庫是private的還需要安裝SSHSlavesplugin , SSHCredentialsPlugin 。
2、配置Git安裝路徑,嚴格來講應該也需配置JDK路徑,但筆者調試時,未配置JDK,也可正常,故配置JDK暫略,方法一樣,Git路徑配置如下:
3、Git帳號配置(這步應該可以省略):
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源碼是否發生變化)

浙公網安備 33010602011771號