增加Jenkins内直接修改压缩包内allure报告名称方法
This commit is contained in:
parent
8da0e848ad
commit
248da04b69
|
@ -4,8 +4,11 @@
|
||||||
# @Author : wangjie
|
# @Author : wangjie
|
||||||
# @File : jenkins_handle.py
|
# @File : jenkins_handle.py
|
||||||
# @project : SensoroApiAutoTest
|
# @project : SensoroApiAutoTest
|
||||||
|
import json
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
import tempfile
|
||||||
|
import zipfile
|
||||||
|
|
||||||
from configs.paths_config import OUT_FILES_DIR
|
from configs.paths_config import OUT_FILES_DIR
|
||||||
from utils.allure_handle import AllureReportBeautiful
|
from utils.allure_handle import AllureReportBeautiful
|
||||||
|
@ -59,5 +62,63 @@ def change_jenkins_allure_report_name():
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def modify_jenkins_allure_report_name_in_zip():
|
||||||
|
"""
|
||||||
|
直接修改Jenkins构建归档中的allure-report.zip压缩包的报告名称,然后重新压缩,相比较于上面的change_jenkins_allure_report_name方法的好处是直接在原压缩包内修改
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
# 从环境变量中读取报告名称
|
||||||
|
new_name = os.getenv('ALLURE_REPORT_NAME',
|
||||||
|
'Allure Report') # 如果环境变量中没有ALLURE_REPORT_NAME并且未传报告名称参数,默认使用'Allure Report'
|
||||||
|
|
||||||
|
# 找到zip文件路径
|
||||||
|
zip_path = os.path.join(JENKINS_HOME, 'jobs', ProjectName, 'builds', BUILD_NUMBER, 'archive',
|
||||||
|
'allure-report.zip')
|
||||||
|
|
||||||
|
# 检查allure-report.zip压缩包是否存在
|
||||||
|
if not os.path.exists(zip_path):
|
||||||
|
raise FileNotFoundError(f"allure-report.zip压缩包未找到:{zip_path}")
|
||||||
|
|
||||||
|
# 临时文件夹用于存放解压后的内容
|
||||||
|
with tempfile.TemporaryDirectory() as temp_dir:
|
||||||
|
# 打开并提取 zip 文件
|
||||||
|
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
|
||||||
|
zip_ref.extractall(temp_dir)
|
||||||
|
|
||||||
|
# 定义需要修改的文件路径
|
||||||
|
summary_file_path = os.path.join(temp_dir, 'allure_report', 'widgets', 'summary.json')
|
||||||
|
|
||||||
|
# 检查 summary.json 是否存在
|
||||||
|
if not os.path.exists(summary_file_path):
|
||||||
|
raise FileNotFoundError(f"在zip归档文件中找不到summary.json文件:{summary_file_path}")
|
||||||
|
|
||||||
|
# 读取原始 summary.json
|
||||||
|
with open(summary_file_path, 'r', encoding='utf-8') as file:
|
||||||
|
summary_data = json.load(file)
|
||||||
|
|
||||||
|
# 修改 summary.json 的内容
|
||||||
|
summary_data['reportName'] = new_name
|
||||||
|
|
||||||
|
# 保存修改后的 summary.json
|
||||||
|
with open(summary_file_path, 'w', encoding='utf-8') as file:
|
||||||
|
json.dump(summary_data, file, indent=4, ensure_ascii=False)
|
||||||
|
|
||||||
|
# 创建一个新的 zip 文件,并将修改后的文件重新压缩
|
||||||
|
new_zip_path = zip_path.replace('.zip', '.zip')
|
||||||
|
with zipfile.ZipFile(new_zip_path, 'w', zipfile.ZIP_DEFLATED) as zip_ref:
|
||||||
|
# 遍历解压后的文件夹,重新压缩成一个新的 zip 文件
|
||||||
|
for foldername, subfolders, filenames in os.walk(temp_dir):
|
||||||
|
for filename in filenames:
|
||||||
|
file_path = os.path.join(foldername, filename)
|
||||||
|
# 设置正确的 arcname,以保持 zip 文件的原有结构
|
||||||
|
arcname = os.path.relpath(file_path, temp_dir)
|
||||||
|
zip_ref.write(file_path, arcname)
|
||||||
|
|
||||||
|
print(f"修改后重新压缩zip文件: {new_zip_path}")
|
||||||
|
return new_zip_path
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
change_jenkins_allure_report_name()
|
# change_jenkins_allure_report_name()
|
||||||
|
|
||||||
|
modified_zip = modify_jenkins_allure_report_name_in_zip()
|
||||||
|
|
Loading…
Reference in New Issue