前言
當前,自動化已經是測試必備技能之一了,除了要會設計、開發自動化測試框架,搭建自動化持續集成環境也是必須的,本篇,將演示如何搭建自動化持續集成環境;
因為大多數公司是java項目,所以,我在idea中使用springboot開發了幾個簡單的mock接口,接口自動化測試框架使用【接口自動化測試實戰】中實戰3的框架,代碼倉庫我用gitee演示,如果你的是github或者gitlab,也是可以的;
思路介紹
想必部分公司的情況是:開發先把代碼提交到代碼倉庫、測試再通過jenkins去拉取對應的分支、然后測試運行自動化測試框架執行測試腳本、最后查看報告。。。
可否開發提交了代碼,后續的任務都自動執行呢?當然是可以的,即:(docker版后續更新)
1、開發提交代碼
2、jenkins自動從代碼倉庫(gitee)拉取對應分支的代碼
3、自動打包
4、自動部署
5、自動從gitee拉取接口自動化測試框架及腳本
6、自動執行測試腳本
7、生成測試報告
8、把報告發布在一個服務下大家通過瀏覽器訪問(也可以發送郵件);
下面就介紹這個流程的具體實現。
環境准備
安裝jdk、tomcat、jenkins、maven、git
jdk:https://www.cnblogs.com/uncleyong/p/10732951.html
tomcat:https://www.cnblogs.com/uncleyong/p/10742650.html
jenkins:https://www.cnblogs.com/uncleyong/p/10742867.html
maven:https://www.cnblogs.com/uncleyong/p/10743181.html
git(務必源碼安裝git,yum安裝的版本低,會出問題):https://www.cnblogs.com/uncleyong/p/10767747.html
jenkins安裝插件
安裝gitee插件(因為我的代碼倉庫是gitee)
maven插件和git插件在安裝jenkins的時候已經自動安裝好了
maven插件
git插件
jenkins全局工具配置
系統管理→全局工具配置
git
maven
jdk
jenkins和gitee通訊方式
這里演示使用https,如果你要使用ssh,需要做配置,即提前將Jenkins所在服務器的key添加到gitee上,配置免密登錄
先生成秘鑰
把公鑰添加到gitee
詳細請參考:https://www.cnblogs.com/uncleyong/p/6891958.html
jenkins任務創建及配置
輸入任務名稱、選擇【創建一個maven項目】
源碼管理選擇Git、輸入遠程倉庫地址
遠程倉庫地址獲取方式如下:
點擊添加→Jenkins
輸入gitee的賬號密碼
或者提前在下面通過賬號密碼添加,依次點擊【系統】--【全局憑據】
選擇類型為用戶名和密碼、輸入你自己gitee的用戶名和密碼
如果是ssh方式,Private Key填寫Jenkins主機的root用戶私鑰(/root/.ssh/id_rsa),用戶是啟動tomcat服務的用戶,我是用root安裝、啟動的
選擇剛剛添加的認證、選擇master分支
構建
創建一個存放jar包的目錄
構建成功執行shell腳本(里面部分命令是調試用的,可以自行刪除,比如:顯示當前路徑pwd)
點擊【應用】、【保存】
現在沒項目服務
【立即構建】
失敗了
查看控制台輸出
錯誤信息
解決方案:https://stackoverflow.com/questions/59763531/maven-dependencies-are-failing-with-501-error
上面提示,自2020年1月15日起,中央存儲庫不再支持通過純HTTP進行的不安全通信,並且要求對存儲庫的所有請求都通過HTTPS進行加密。
於是我們在構建過程中所依賴的settings文件中,加入以下配置:
內容
參考:https://www.cnblogs.com/flashfish/p/12202305.html
<mirror> <id>central</id> <name>Maven Repository Switchboard</name> <url>https://repo1.maven.org/maven2/</url> <mirrorOf>central</mirrorOf> </mirror>
重新構建,構建成功
放jar包的目錄下可以看到已經有jar包,且服務也啟動起來了
瀏覽器訪問成功了
觸發構建項目
上面,是我們手動點擊構建后,jenkins去gitee拉取的代碼,這一小節,演示觸發構建,即開發提交代碼后就自動化拉取代碼、構建。。。
先把之前的服務停了,jar包刪了
點擊【配置】
構建觸發器,可以看到在Gitee webhook中要填寫的url
點擊【生成】
生成密碼
點擊【應用】、【保存】
gitee中配置,在演示的java項目中,【管理】--【WebHooks】--【添加】
填入上面jenkins中的url和密碼
上面點擊【添加】后,點擊下方【測試】
可以看到,jenkins自動構建了
構建成功
服務也啟動起來了
瀏覽器訪問成功
下面我們模擬開發提交代碼
先把之前的服務停了,jar包刪了
我們將部門改為“持續集成部”
add--commit--push代碼,另外,git基礎請參考:https://www.cnblogs.com/uncleyong/p/10854115.html
代碼倉庫可以看到更新
jenkins自動構建
服務也啟動了
url訪問,可以看到部門變成了“持續集成部”
持續集成shell腳本優化
現在遺留的問題是,每次需要先手動停止服務、手動刪除jar包
我們可以寫一個簡單的shell腳本
內容如下(里面部分命令是調試用的,可以自行刪除,比如:顯示當前路徑pwd):
命令中,改為執行這個shell腳本
性別改為“女”
add--commit--push
自動構建成功
日志
服務啟動起來了
瀏覽器請求,性別顯示是“女”
下一篇,將集成自動化測試框架,自動運行測試腳本、生成測試報告、發布報告。
自動化必備:自動化持續集成環境搭建(下):git + maven + jenkins