jenkins + allure實現自動化的持續集成


安裝jenkins的Allure插件

進入jenkins的插件管理,切換到可選插件,查找Allure插件,點擊下載待重啟后安裝

這里出現了問題:手動安裝插件時報錯
因為版本的問題,至少要升jenkins到v2.138.4 之后才可以安裝Allure,但是鏡像庫里沒有那么新的版本。只能在centos7下安裝了最新版本。安裝教程請戳這里-->《centos安裝jenkins》

java.io.IOException: Folders Plugin v6.12 failed to load.
 - You must update Jenkins from v2.60.3 to v2.138.4 or later to run this plugin.
	at hudson.PluginWrapper.resolvePluginDependencies(PluginWrapper.java:626)
	at hudson.PluginManager.dynamicLoad(PluginManager.java:864)
Caused: java.io.IOException: Failed to install cloudbees-folder plugin
	at hudson.PluginManager.dynamicLoad(PluginManager.java:874)
	at hudson.PluginManager.dynamicLoad(PluginManager.java:813)
	at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1889)
Caused: java.io.IOException: Failed to dynamically deploy this plugin
	at hudson.model.UpdateCenter$InstallationJob._run(UpdateCenter.java:1893)
	at hudson.model.UpdateCenter$DownloadJob.run(UpdateCenter.java:1651)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at hudson.remoting.AtmostOneThreadExecutor$Worker.run(AtmostOneThreadExecutor.java:110)
	at java.lang.Thread.run(Thread.java:748)

Allure Commandline配置



工程配置

創建Freestyle project

General

源碼管理(Source Code Management)

由於代碼是在本地,所以這里不需要配置

構建觸發器(Build Triggers)

這里我設置的是每個月每個星期每一天每個小時中,每隔25分鍾構建一次

構建(Build)

由於是在centos7下構建,這里使用的是Execute shell

構建后操作(Post-build Actions)

Path后面的目錄存放的是生成html報告所依賴的json,txt等文件,點擊Advanced,下面的allure_reports/html是存放報告的目錄

保存

保存后看到頁面是這樣的

點開Workspace,發現里面報錯:Error:no workspce,這是因為還沒有構建的原因,構建之后,會開辟一塊默認的工作空間用來存放自動化腳本

執行構建



從控制台輸出可以看到,工作目錄的路徑是:/var/lib/jenkins/workspace/APP_AutoTest

拷貝腳本


拷貝完腳本可以看到Workspace下面已經有了腳本

問題匯總

解決權限問題

  1. 給項目賦權
# 進入到工作空間
cd /var/lib/jenkins/workspace

# 給項目工程755權限
chmod 755 -R APP_AutoTest
  1. jenkins以root身份運行
# 打開配置文件
vim /etc/sysconfig/jenkins

# 修改$JENKINS_USER,並去掉當前行注釋
$JENKINS_USER="root"

# 修改jenkins相關目錄用戶權限
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins

# 重啟jenkins服務
systemctl restart jenkins

# 查看進程所屬用戶
ps -ef | grep jenkins

解決allure找不到的問題

  1. 點擊Manage Jenkins,進度Global Tool Confuguration。在這里使用本地安裝好的allure commandline,不要勾選自動安裝Install automatically。不知道本地安裝的allure路徑的話,使用whereis allure查看,注意路徑填的時候不要帶bin

  2. 點擊Configure System,配置Global properties,勾選Tool Locations
    這里的Name是自動生成的,只需要配置Home,和上面的路徑保持一致就行

解決清理報告問題

main.py方法中的os.system(f"allure generate {allure_reports_dir} -o {allure_reports_dir}/html --clean"),使用--clean。只是清除了allure_reports下的html目錄,而allure_reports目錄下還存放着之前運行生成的json、txt等文件,需要定義clean.py在每一次運行用例之前清除它們

  1. 在clean.py中定義清除allure_reports目錄下的文件的方法
# clean.py
...
#清allure報告
def clean_allure_report(dir_path):
    for file in os.listdir(dir_path):
        if os.path.isfile(os.path.join(dir_path, file)) and re.search("json|txt|png", file) != None:
            os.remove(os.path.join(dir_path, file))
            
clean_allure_report(allure_reports_dir)
...
  1. 在main.py中,引入clean.py即可
# main.py
from clean import *
...

展示報告



備注

工作空間問題

工作空間可以在General下的Advance里的Use custom workspace里自定義

生成報告問題

如使用jenkins,在代碼里可以不使用allure generate...生成測試報告,但要配置pytest --alluredir allure_reports,這一步是為了收集生成報告的數據,不然看到的報告將是空的

清理問題

jenkins下:不需要清理allure_reports和html目錄
本地:不需要清理allure_reports,需要清理html目錄,使用os.system(f"allure generate {allure_reports} -o {html} --clean")

參考文章

《Jenkins集成allure測試報告》
《CentOS系統Jenkins以root用戶方式運行》
《jenkins構建allure報Can't find allure commandline


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM