Jenkins+Python自動化測試持續整合詳細教程

miki_peng發表於2021-03-01

​ Jenkins是一個開源的軟體專案,是基於java開發的一種持續整合工具,用於監控持續重複的工作,旨在提供一個開放易用的軟體平臺,使軟體的持續整合變成可能。由於是基於java開發因此它也依賴java環境,安裝之前需要先安裝jdk,建議jdk1.8+,安裝後配置java環境變數。安裝jdk成功後,在cmd使用java -version可檢視jdk版本資訊。

Jenkins安裝

Jenkins安裝

​ 官網下載地址:https://www.jenkins.io/zh/ ,或者這個網址直接下載:http://mirrors.jenkins.io/war-stable/latest/jenkins.war ,下載的包可以是Jenkins.war,也可以是Jenkins.msi。

​ 如果是Jenkins.war,那麼將這個檔案放到一個目錄下,開啟cmd,進入到此檔案所在目錄,執行:java -jar jenkins.war --httpPort=8080即可;如果是Jenkins.msi,直接雙擊開啟執行安裝。

​ 安裝好之後,開啟瀏覽器輸入:localhost:8080,會出現下面這個圖:

​ 稍等一會,會提示需要輸入管理員密碼,按照提示到對應的路徑找到initialAdminPassword這個檔案,用記事本開啟,裡面會有一個密碼,把這個密碼貼上到文字框中點確定即可。

​ 到下圖這一步時,選擇左邊安裝推薦的外掛,安裝外掛的過程會比較漫長,如果網路比較差,很多安裝失敗的話也可以點選continue跳過安裝,就會跳到設定使用者頁面,設定一個使用者密碼,就進入主頁面了。

離線安裝外掛

​ 在安裝jenkins時如果跳到了外掛安裝,後面想再安裝外掛可以在主頁面系統管理》外掛管理中下載,如果網路不好下載外掛很慢或失敗時,可以試試到這個外掛列表中去下載:http://updates.jenkins-ci.org/download/plugins/ ,下載的是.hpi格式的檔案,下載後在jenkins系統管理》外掛管理》高階》上傳外掛,上傳對應外掛的.hpi檔案,然後重啟jenkins即可。

離線升級

​ 同理,在需要升級jenkins時,線上升級比較慢的情況下,我們也可以離線去下載,推薦地址:http://mirrors.jenkins-ci.org/war/ ,下載的是.war字尾的包。

離線升級步驟?:

  1. 下載war包:見上
  2. 替換war包:找到本地 jenkins 的 war 包的安裝路徑,可在jenkins系統管理》系統資訊中查詢到;然後把下載好的war包替換掉原來的war包
  1. 重啟服務:Ctrl + Alt + Del 開啟工作管理員,重新啟用 jenkins 服務

Jenkins部署專案

​ 如果在沒有pycharm編譯器的情況下我們怎麼執行專案呢?可以在windows的命令列下直接執行,但執行時需要先切換到專案路徑下,然後在cmd輸入python 檔名.py,或者不切換路徑,直接輸入檔案的完整路徑,如:python c:\test\main.py

​ 當然,更方便的還是在Jenkins上面一鍵執行。

​ 首先要建立一個工作專案,型別選第一個Freestyle project就行。

​ 每一個專案建立後,都需要先執行一遍構建才會有工作區間,否則進入工作區間會顯示如下:

​ 構建一遍後再點進工作區間會顯示“空目錄”,這是因為我們還沒有把測試專案放到Jenkins。先找到Jenkins安裝目錄下的workplace,然後在對應目錄下把我們的測試專案整個拷過來即可,如下:

​ 如果原始碼不在本地,使用的是git或svn,那麼配置好專案的git/svn,執行構建後會自動把伺服器上的程式碼拉取下來。下面是原始碼管理及構建的步驟:

原始碼管理

​ 原始碼管理(source code management):需要安裝外掛,如:git/svn,沒有外掛時顯選擇無,直接使用原生程式碼,需要拷貝到工作區間。

​ 這裡以git為例,引數說明?:

  • repository url:專案的git地址(svn則填svn地址)
  • credentails:點選新增Jenkins憑據,填寫git/svn的賬號及密碼》儲存;儲存後在左側選擇賬號

構建

​ 構建,即如何執行專案。新增構建步驟,windows選擇execute windows batch command,linux或mac選擇execute shell,然後輸入終端的執行命令:python 檔名.py,儲存後點選構建(build now)就可以執行專案了,注意這裡執行的檔案需要存放在工作區間的根目錄下(因為這裡預設是根目錄)。

​ 配置好後,就可以執行專案了,在對應專案裡點選build now(立即構建)就可以執行專案了,在左下角可檢視構建進度、構建歷史,還可以檢視控制檯的輸出。

Jenkins傳送郵件

​ 在另一篇隨筆已經介紹瞭如何使用python傳送測試報告:傳送門,現在就來介紹一下如何使用jenkins來傳送郵件

安裝外掛

​ Jenkins需要先安裝以下兩個外掛

配置郵件地址

​ 位置:jenkins管理》系統配置》Jenkins Location。在系統管理員郵件地址,輸入對應的郵件地址

配置smtp服務

​ 位置:jenkins管理》系統配置》Extended E-mail Notification,填寫對應的smtp伺服器相關內容,如下是qq郵箱示例,授權碼獲取見傳送門

​ 點選高階,輸入對應的郵箱地址和smtp登入的授權碼,勾選ssl。

配置郵件觸發器

​ 位置:jenkins管理》系統配置》Default Triggers,預設是勾選失敗才發,可以配置總是傳送(或根據需求勾選),那麼每次執行專案時都會傳送郵件。

​ 需要特別注意的是,如果專案已經建立了(專案預設是失敗傳送)才去配系統觸發器(配了總是傳送),那麼專案會讀取專案的觸發器,如果是先配置了系統觸發器再建立的專案,那麼專案的觸發器是讀取系統觸發器的。配置專案的觸發器見第5點。

配置構建後操作

​ 位置:對應專案》配置》新增構建後操作-Editable Email Notifiction,輸入收件人郵件地址(Project Recipient List),多個郵箱可以用英文逗號隔開;輸入附件內容(Attachments):reports/report.html,這裡輸入的是:專案存放測試報告的資料夾名/測試報告檔名。

​ 郵件觸發器,點選高階》找到triggers。

​ 郵件觸發器:

html展示配置

​ 配置後專案生成的html報告就可以直接在專案中檢視,如下圖:

​ 需要安裝外掛:HTML Publisher

​ 安裝後配置專案構建後操作:對應專案》配置》增加構建後操作。

​ 配置好後重新構建專案就會在專案生成HTML Report目錄,但是檢視這個報告後你會發現html報告在jenkins上顯示沒有那麼美觀,那是因為少了html裡面的css和js,因為jenkins是預設會禁掉css和js。

解決辦法?:

​ 在jenkins管理》命令列終端(Script Console),輸入:System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "script-src 'unsafe-inline'"),點選【執行】就好了(記住重啟jenkins後,就會恢復預設設定,需要重新配置)。

Jenkins定時任務

​ 顧名思義,就是定時去執行專案。配置位置:對應專案》配置》構建觸發器》定時構建(Build Periodically)。

​ 定時規則分為5個部分:分鐘、小時、每月的日子、月份、星期,每個部分需要用空格隔開,*代表所有,如果是5個*意思就是每分鐘執行一次,再舉例30 8 * * 1,意思就是每週一上午8點30分執行一次。每次輸入定時規則時,下方會有提示說明,以及上一次執行時間、下一次執行的時間。

​ 每個部分還可以設定其他的值,詳情可檢視提示瞭解。

Jenkins構建觸發器

​ 實際有可能我們執行專案不是一定要定時去執行的,可能開發每次一發版我們就要執行構建一遍來觀察開發的新程式碼是否會有問題,那我們就可以配置一個構建觸發器。

​ 配置位置:對應專案》配置》構建觸發器》其他工程構建後觸發(Build after other projects are build),輸入對應的專案名稱,選擇“構建穩定時觸發”,意思就是我的測試指令碼專案在另一個專案(test專案,這裡指開發的專案)部署構建完成後沒有出現問題了才觸發構建我的測試指令碼專案。

​ 也就是說,每一次開發發版成功後就會構建一遍我的測試指令碼專案。完美?

Jenkins漢化

​ 設定中文顯示的兩個外掛:

​ 然後在jenkins管理》系統配置》Locale,配置顯示中文:

​ 如果配置後出現半英文半中文,可以先設定為zh_EN(英文),然後重啟jenkins,再重新設定為zh_CN(中文簡體)即可。重啟jenkins,可以直接在瀏覽器輸入:http://localhost:8080/restart ,如果不是8080埠就替換成你設定的埠。

相關文章