Jenkins 自動化測試(構建)平台搭建
自動化測試流程
在進行平台搭建前,我們首先要問自己:我需要搭建的平台的功能是什么,要實現什么目標?
在我的理解中,自動化構建平台的執行流程(目標)是:
- 我們將代碼提交到代碼托管工具上,如github、gitlab、gitee等。
- Jenkins要能夠檢測到我們的提交。
- Jenkins檢測到提交后,要自動拉取代碼,運行測試,並進行構建、打包。
- Jenkins執行完測試和構建后,要向相關人員發送構建結果。
- Jenkins要能夠向我們展示測試運行的分析。
其實還可以加上自動化部署——把成功的構建添加到web 容器。
自動化測試搭建
有了大致的目標,就可以一步步實現了。
代碼倉庫搭建
常用的代碼托管平台有GitHub、Gitlab、Gitee等。我選擇了Gitlab。
Gitlab可以托管在Gitlab的網站上,也可以建立本地的Gitlab倉庫。
為了訪問更穩定,我選擇了在自己的阿里雲服務器上搭建gitlab倉庫。
步驟:
-
服務器安裝Gitlab。可以通過寶塔安裝,也可以自己手動安裝。安裝后開放相應的端口,就可以訪問到Gitlab了。
-
創建賬號,登錄,創建一個項目
-
為了讓我們能夠向該項目提交代碼,需要進行ssh認證。將本地主機的SSH公鑰添加到遠程項目里。此外,如果遠程項目是私有的,那還要添加可訪問的用戶群組。
Jenkins 安裝
下載Jenkins的war包,放在Tomcat的webapps路徑下,然后重啟Tomcat。
開放相應的端口,然后就可以訪問到了。
Jenkins首次啟動時,會生成一個管理員賬號和密碼,一定要記得。
Jenkins 插件安裝
下面的配置過程中會使用到很多插件,在這里列出。配置時不再說明。
Git 、GitLab 、Email Extension 、Allure Jenkins Plugin、Maven Integration plugin
可參考博客:[Jenkins插件大全及用途簡介]((19條消息) Jenkins插件大全及用途簡介_pansaky的博客-CSDN博客_jenkins插件)
Jenkins配置maven
- 安裝maven
在系統管理-->全局工具配置中添加maven,如果服務器上已經安裝了maven,那么指定MAVEN_HOME。
如果沒有安裝,那么可以選擇版本,讓Jenkins自己安裝。
-
下載maven插件
在系統管理-->插件管理中,搜索、安裝 Maven Integration plugin 。
-
建立一個maven任務
Jenkins 關聯代碼倉庫
在上面建立的maven任務的:配置-->源碼管理 中添加代碼倉庫。
這里,需要進行認證,添加Credentials:
輸入用戶名、密碼即可。然后選擇剛才添加的Credential。
這樣,我們就將Jenkins關聯到了代碼倉庫上。Jenkins就能夠從該代碼倉庫上面拉取代碼了。
Gitlab 提交觸發 Jenkins 自動構建
-
配置Jenkins觸發器
在配置-->構建觸發器 中,選中 Build when a change is pushed to GitLab. GitLab webhook URL:***
該URL在配置Gitlab鈎子時要用到。
繼續,在構建觸發器-->高級 中,點擊generate,生成一個secret token。
該token也在配置web hook 時要使用。
配置完成后,點擊應用、保存。
-
配置Gitlab web hook
什么是web hook?他就像一個魚鈎一樣,當有🐟到了,就拉一下。
我們可以配置一個URL,當Gitlab檢測到事件時(如:有新的提交時),就會向配置的URL發送消息。
釣魚佬,別睡了,有魚上鈎了!
鏈接中輸入Jenkins觸發器那里的鏈接,私密授權碼輸入secret token。
配置完鈎子后,測試一下。返回HTTP 200,就算成功了。
-
配置Build
上面的配置完成了提交代碼的自動下拉,但是怎么構建呢,還需要配置Build:
由於使用的maven來進行構建,所以root pom要使用maven項目的pom文件。
下面的Goals and options是構建時還要執行的指令,我們希望每一次構建都運行一下測試,因此填入test指令。
這和我們在本地執行maven test指令差不多。
-
測試一下
我們現在就完成了gitlab提交后的自動構建,來測試一下:
向gitlab倉庫提交一個測試代碼,如果成功,應該能夠看到構建被觸發了:(我使用的是執行過的例子)
然后可以看到構建的控制台輸出:
這就代表我們的自動構建功能實現了。
生成測試報告
我使用了Allure來生成測試報告。
-
安裝Allure Commandline
我們使用了Allure的項目測試后,會生成一個allure results文件,該文件里面記錄了測試信息。
Allure Commandline 的功能,就是解析這些信息,然后生成一個可視化的網頁界面。
和maven安裝類似,可以指定本地的,也可以讓Jenkins自己安裝。
-
配置構建后操作
Jenkins 使用maven構建后,要實現測試結果可視化,還要配置Allure來收集測試信息。
添加一個Allure Report的構建后操作即可,Path中填寫的是Allure生成的可視化頁面的位置。
-
測試
添加了Allure后,執行測試就可以看到可視化的測試報告了。
注意,要使的Allure生效,我們的maven項目中,要添加Allure的插件。這樣才能在測試時收集測試信息。
下面是一個可運行的pom:
<properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <maven.compiler.target>1.8</maven.compiler.target> <maven.compiler.source>1.8</maven.compiler.source> <junit.version>5.7.1</junit.version> <aspectj.version>1.8.10</aspectj.version> </properties> <dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>4.0.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-api</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <!-- allure--> <dependency> <groupId>io.qameta.allure</groupId> <artifactId>allure-junit5</artifactId> <version>RELEASE</version> <scope>test</scope> </dependency> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.1</version> </plugin> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.22.1</version> <configuration> <testFailureIgnore>false</testFailureIgnore> <argLine> -javaagent:"${settings.localRepository}/org/aspectj/aspectjweaver/${aspectj.version}/aspectjweaver-${aspectj.version}.jar" </argLine> <systemProperties> <property> <name>junit.jupiter.extensions.autodetection.enabled</name> <value>true</value> </property> </systemProperties> </configuration> <dependencies> <dependency> <groupId>org.junit.platform</groupId> <artifactId>junit-platform-surefire-provider</artifactId> <version>1.2.0</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>${aspectj.version}</version> </dependency> </dependencies> </plugin> <plugin> <groupId>io.qameta.allure</groupId> <artifactId>allure-maven</artifactId> <version>2.10.0</version> <configuration> <reportVersion>2.4.1</reportVersion> </configuration> </plugin> </plugins> </build>
push 該使用了Allure的項目,構建后會生成Allure Report文件:
點擊查看Allure Report文件:
郵件通知
最后一步啦!配置郵件通知,在構建后向相關人員發送郵件,報告構建情況。
-
安裝郵件插件
由於Jenkins自帶的郵件功能比較雞肋,因此這里推薦安裝專門的郵件插件,不過下面也會順帶介紹如何配置Jenkins自帶的郵件功能作用。
可以通過 系統管理→管理插件→可選插件,選擇Email Extension Plugin插件進行安裝:
-
進行郵件配置
這里既可以在 系統管理-->系統設置下配置,也可以在工作下進行配置。只是說在系統設置下配置的是全局的。
- 設置jenkins地址和管理員郵箱地址
-
設置發件人等信息
PS:這里的發件人郵箱地址切記要和系統管理員郵件地址保持一致(當然,也可以設置專門的發件人郵箱,不過不影響使用,根據具體情況設置即可)
上圖的默認收件人郵箱可以添加多人,中間用英文半角逗號隔開即可。
-
配置郵件內容模版
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>${ENV, var="JOB_NAME"}-第${BUILD_NUMBER}次構建日志</title> </head> <body leftmargin="8" marginwidth="0" topmargin="8" marginheight="4" offset="0"> <table width="95%" cellpadding="0" cellspacing="0" style="font-size: 11pt; font-family: Tahoma, Arial, Helvetica, sans-serif"> <tr> 本郵件由系統自動發出,無需回復!<br/> 各位同事,大家好,以下為${PROJECT_NAME }項目構建信息</br> <td><font color="#CC0000">構建結果 - ${BUILD_STATUS}</font></td> </tr> <tr> <td><br /> <b><font color="#0B610B">構建信息</font></b> <hr size="2" width="100%" align="center" /></td> </tr> <tr> <td> <ul> <li>項目名稱 : ${PROJECT_NAME}</li> <li>構建編號 : 第${BUILD_NUMBER}次構建</li> <li>觸發原因: ${CAUSE}</li> <li>構建狀態: ${BUILD_STATUS}</li> <li>構建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li> <li>構建 Url : <a href="${BUILD_URL}">${BUILD_URL}</a></li> <li>工作目錄 : <a href="${PROJECT_URL}ws">${PROJECT_URL}ws</a></li> <li>項目 Url : <a href="${PROJECT_URL}">${PROJECT_URL}</a></li> <li>系統allure測試報告:<a href="${PROJECT_URL}${BUILD_NUMBER}/allure">${PROJECT_URL}${BUILD_NUMBER}/allure</a></li> </ul> <h4><font color="#0B610B">失敗用例</font></h4> <hr size="2" width="100%" /> $FAILED_TESTS<br/> <h4><font color="#0B610B">最近提交(#$GIT_REVISION)</font></h4> <hr size="2" width="100%" /> <ul> ${CHANGES_SINCE_LAST_SUCCESS, reverse=true, format="%c", changesFormat="<li>%d [%a] %m</li>"} </ul> 詳細提交: <a href="${PROJECT_URL}changes">${PROJECT_URL}changes</a><br/> </td> </tr> </table> </body> </html>
-
設置郵件觸發機制
上面的幾步完成后,點擊應用,保存即可。
-
配置Jenkins自帶的郵件功能
配置內容如下,和Email Extension Plugin插件同樣的配置,可以通過勾選通過發送測試郵件測試配置按鈕來測試配置是否成功發送郵件,如下圖:
完成上面的系統設置后,點擊保存即可。
-
配置構建后操作模塊
進入構建后操作的模塊,然后會看到下面的內容,具體的配置信息如圖中標注:
接上圖:
配置內容默認即可,郵件內容類型可以根據自己的配置選擇,收件人列表可以從前面的系統設置中默認收件人選項配置。
-
測試
構建后,應該收到郵件:
對 Jenkins 的理解
沒時間寫了。。以后有時間補上(那就是沒有了唄)。
參考引用
郵件部分:老_張
搭建平台的過程還參考了很多博主的博客,沒有一一記錄,感謝博主們的博文。
這篇博客更像是資源整合,但是還有很多沒有提及的地方,歡迎補充!
可以轉載,但是請引用一下!