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原始碼是否發生變化)
技術改變世界!
–狂詩絕劍
相關文章
- gitlab和jenkins做持續整合構建教程GitlabJenkins
- Linux下配置Jenkins+gitlab持續整合構建流程LinuxJenkinsGitlab
- 持續整合指南:GitHubAction 自動構建+部署AspNetCore專案GithubNetCore
- Kubernetes/K8S構建Jenkins持續整合平臺K8SJenkins
- 持續整合、持續交付與持續部署
- 持續整合、持續部署、持續交付、持續釋出
- 高德引擎構建及持續整合技術演進之路
- 持續整合持續部署持續交付_持續整合與持續部署之間的真正區別
- Travis CI 持續整合服務構建 Composer 類庫簡明教程
- Jenkins實現持續整合 使用Ant指令碼構建ios專案Jenkins指令碼iOS
- Jenkins持續整合Jenkins
- 持續整合 2.0
- 持續整合(二)
- 你真的懂持續整合、持續交付、持續部署嗎?!
- 基於K8s構建Jenkins持續整合平臺(部署流程)K8SJenkins
- 基於Kubernetes/K8S構建Jenkins持續整合平臺(下)K8SJenkins
- 淺談持續整合(CI)、持續交付(CD)、持續部署(CD)
- 對持續整合、 持續交付、持續部署和持續釋出的介紹
- 從零入門 Serverless | 教你 7 步快速構建 GitLab 持續整合環境ServerGitlab
- 基於Kubernetes/K8S構建Jenkins持續整合平臺(上)-1K8SJenkins
- 基於Kubernetes/K8S構建Jenkins持續整合平臺(上)-2K8SJenkins
- 3分鐘瞭解清楚持續整合、持續交付、持續部署
- Jenkins持續整合配置Jenkins
- CircleCI 與持續整合
- 《前端運維》四、Jenkins--持續構建前端運維Jenkins
- 學習Jenkins持續整合(三)Jenkins專案構建觸發器、引數化構建及郵件傳送Jenkins觸發器
- Taro 小程式持續整合
- AspNetCore&Coding持續整合NetCore
- 什麼是持續整合?
- 持續整合 Jenkins 簡介Jenkins
- 持續整合配置之Nuget
- jenkins+docker 持續整合JenkinsDocker
- 持續整合Jenkins+GitlabJenkinsGitlab
- Jenkins 持續整合使用教程Jenkins
- 淺談持續整合的理解以及實現持續整合,需要做什麼?
- 使用流水線外掛實現持續整合、持續部署
- Jenkens+Docker+Git 持續整合DockerGit
- Flutter web 持續整合實踐FlutterWeb