使用GitLink个人建站服务部署Allure在线测试报告

更多技术文章,访问软件测试社区

文章目录

    • 🚀前言
    • 🔑开通GitLink个人建站服务
      • 1. 前提条件
      • 2. 登录GitLink平台(https://www.gitlink.org.cn/login)
      • 3. 进入设置>个人建站>我的站点
      • 4. 新建站点
      • 5. 去仓部进行部署
      • 6. 安装Bot"个人建站自动部署"
    • 💻推送Allure HTML报告到个人建站服务仓库
    • ✅查看测试报告

🚀前言

在实际工作中,我们常常需要将测试报告发送给相关方。然而,使用Allure报告存在一定的操作门槛。例如,用户需要先安装Allure程序,再通过特定命令才能查看报告。对于非技术人员来说,这一过程不够友好,不仅增加了使用成本,还降低了工作效率。
为了解决这一问题,我们可以通过GitLink个人建站服务来托管Allure报告。借助这种方式,相关方只需点击一个链接,即可直接查看报告,无需安装任何工具或执行复杂命令。这不仅极大提升了报告的易用性和访问效率,还简化了操作流程,降低了使用门槛,使报告分享变得更加便捷。

🔑开通GitLink个人建站服务

1. 前提条件

  • 拥有一个GitLink平台的账号,可通过如下链接进行注册:https://www.gitlink.org.cn/register
  • GitLink平台账号已完成实名认证。

2. 登录GitLink平台(https://www.gitlink.org.cn/login)

在这里插入图片描述

3. 进入设置>个人建站>我的站点

如果用户未完成实名认证审核,将提示“您尚未通过实名认证,无法使用此服务,如需使用,请先进行实名认证。”, 可点击“前往验证”完成实名认证。
在这里插入图片描述

4. 新建站点

实名认证审核通过后,按照要求新建站点即可。
站点新建成功后, 会生成一个对应的仓库,仓库名格式参考如下:{平台登录的login}.gitlink.net。同时部署的服务的网址格式如下:http://{平台登录的login}.gitlink.net/
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5. 去仓部进行部署

点击“去仓库”,可以查看到刚刚构建的个人建站服务仓库。
正常流程下:将allure html报告的文件推送到仓库,在"服务tab>个人建站服务”,点击部署即可成功部署Allure测试报告在线服务。
这里我们将使用Bot自动部署服务。
在这里插入图片描述

6. 安装Bot"个人建站自动部署"

Bot地址:https://www.gitlink.org.cn/softbot/10039

点击“安装此Bot”将Bot安装到个人建站服务的仓库。
在这里插入图片描述

安装完成后,在个人建站服务仓库可以查看到已安装的Bot。 Bot检测到仓库有代码推送会自动部署个人建站服务,无需手动点击部署。
在这里插入图片描述

在这里插入图片描述

💻推送Allure HTML报告到个人建站服务仓库

我们需要把Allure生成的HTML报告全部推送到个人建站服务仓库。具体参考如下:
在这里插入图片描述

推送的方式各异,我这里是自动化测试运行结束后,调用了方法push_allure_report将Allure生成的HTML报告全部推送到个人建站服务仓库。
大家可以参考我的写法。

push_allure_report.py文件具体内容:

# 第三方模块
from loguru import logger
# 标准库导入
import subprocess
import shutil
import os

"""
subprocess.run: 用于执行系统命令。

 check=True 表示如果命令执行失败会抛出异常。

 -C 参数用于指定Git命令的工作目录。
 
"""
def copy_all_files(src_dir, dst_dir):
    """
    将源目录中的所有文件和子目录复制到目标目录中。

    参数:
        src_dir (str): 源目录路径。
        dst_dir (str): 目标目录路径。
    """
    try:
        # 确保目标目录存在
        os.makedirs(dst_dir, exist_ok=True)

        # 遍历源目录中的所有文件和子目录
        for item in os.listdir(src_dir):
            src_item = os.path.join(src_dir, item)  # 源文件/目录的完整路径
            dst_item = os.path.join(dst_dir, item)  # 目标文件/目录的完整路径

            if os.path.isfile(src_item):
                # 如果是文件,直接复制
                shutil.copy2(src_item, dst_item)
                print(f"复制文件: {src_item} -> {dst_item}")
            elif os.path.isdir(src_item):
                # 如果是目录,递归复制
                shutil.copytree(src_item, dst_item, dirs_exist_ok=True)
                print(f"复制目录: {src_item} -> {dst_item}")
    except Exception as e:
        print(f"复制失败: {e}")

def push_allure_report(allure_report_dir: str, remote_url: str, username: str, password: str, branch: str = "master",
                       message: str = "update report"):
    """
    将本地生成的 Allure HTML 报告推送到指定的 GitLink 仓库。
    :param allure_report_dir : 本地生成的 Allure HTML 报告目录路径。
    :param remote_url:  远程仓库的HTTP地址, 需要带有.git, 例如:https://gitlink.org.cn/floraachy/floraachy.gitlink.net.git。
    :param branch:  远程仓库的分支。
    :param username:  登录远程仓库的用户名。
    :param password:  登录远程仓库的密码。
    :param message: 提交更改的说明信息。
    """

    repo_name = remote_url[:-4].split("/")[-1]
    repo_path = os.path.join(os.path.dirname(allure_report_dir), repo_name)
    print(f"本地仓库地址:{repo_path}")
    logger.info(f"本地仓库地址:{repo_path}")

    try:
        # 检查目录是否存在
        if os.path.exists(repo_path):
            print(f"目录已存在,正在删除: {repo_path}")
            logger.info(f"目录已存在,正在删除: {repo_path}")
            shutil.rmtree(repo_path)  # 删除目录及其内容

        # 重新创建目录
        os.makedirs(repo_path)
        logger.info(f"目录已重新创建: {repo_path}")
        print(f"目录已重新创建: {repo_path}")
    except Exception as e:
        logger.error(f"操作失败: {e}")
        print(f"操作失败: {e}")

    try:
        # -------------初始化本地仓库并提交代码 -----------------
        subprocess.run(["git", "-C", repo_path, "init"], check=True)
        print("初始化本地仓库成功")
        logger.info("初始化本地仓库成功")

        auth_remote_url = f"https://{username}:{password}@{remote_url.split("//")[-1]}"
        print(f"添加远程仓库: {auth_remote_url}")
        logger.info(f"添加远程仓库: {auth_remote_url}")
        subprocess.run(["git", "-C", repo_path, "remote", "add", "origin", auth_remote_url], check=True)

        print("复制 Allure HTML报告所有文件到本地仓库")
        logger.info("复制 Allure HTML报告所有文件到本地仓库")
        copy_all_files(src_dir=allure_report_dir, dst_dir=repo_path)

        print("将更改添加到暂存区")
        logger.info("将更改添加到暂存区")
        subprocess.run(["git", "-C", repo_path, "add", "."], check=True)

        print("提交更改")
        logger.info("提交更改")
        subprocess.run(["git", "-C", repo_path, "commit", "-m", message], check=True)

        print("强制推送代码")
        logger.info("强制推送代码")
        subprocess.run(["git", "-C", repo_path, "push", "--force", "origin", branch], check=True)

        print("Allure 报告推送成功!")
        logger.success("Allure 报告推送成功!")
    except subprocess.CalledProcessError as e:
        print(f"Git 操作失败: {e}")
        logger.error(f"Git 操作失败: {e}")

然后在run.py中调用方法push_allure_report,按照要求传入指定参数,例如:

push_allure_report(allure_report_dir="\report\allure_html", remote_url="http:xxxxxxx.git",
                           username="xxxxx", password="xxxxx"])

✅查看测试报告

当Allure HTML最新报告推送到个人建站仓库后,会自动触发Bot"个人建站自动部署"自动部署最新代码。部署完成后访问网站地址即可查看最新报告。
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/983243.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

自学嵌入式第27天------TCP和UDP,URL爬虫

1. TCP和UDP区别 **TCP(传输控制协议)和UDP(用户数据报协议)**是两种主要的传输层协议,它们在数据传输方式上有显著区别: 连接性: TCP是面向连接的协议,通信前需通过三次握手建立连…

亲测解决笔记本触摸板使用不了Touchpad not working

这个问题可以通过FnFxx来解决,笔记本键盘上Fxx会有一个触摸板图标。如果不行应该玉藻设置中关了,打开即可。 解决办法 在蓝牙,触摸板里打开即可。 Turn it on in settings。

Kubernetes中的 iptables 规则介绍

#作者:邓伟 文章目录 一、Kubernetes 网络模型概述二、iptables 基础知识三、Kubernetes 中的 iptables 应用四、查看和调试 iptables 规则五、总结 在 Kubernetes 集群中,iptables 是一个核心组件, 用于实现服务发现和网络策略。iptables 通…

(九) Java 多线程解析:常见问题、实际开发挑战与解决方案

在 Java 开发领域,多线程编程是面试中的重点考察内容,同时也是实际项目开发中的关键技能。本文将详细探讨 Java 多线程面试中的常见问题,深入剖析实际开发中可能遇到的挑战,并提供具体的解决方案,帮助你在面试和工作中…

deepseek 3FS编译

3FS在ubuntu22.04下的编译(记录下编译过程,方便后续使用) 环境信息 OS ubuntu 22.04内核版本 6.8.0-52-genericlibfuse 3.16.1rust 1.75.0FoundationDB 7.1.66meson 1.0.0ninja 1.10.1 libfuse编译 以下建议均在root下执行 pip3 install…

docker-compose安装redis-主从+哨兵(3台虚拟机一主两从)

一、部署架构 ‌主从结构‌ ‌主节点‌:部署于192.168.56.100‌从节点‌:部署于192.168.56.101和192.168.56.103 ‌哨兵结构‌ 每台服务器部署一个哨兵实例,形成三哨兵集群。 ipredis节点名称sentinel节点名称192.168.56.100redis-masterr…

vue+element 实现蛇形时间轴 拐弯时间轴

公司业务需要做一个如图效果 分享给有需要的人 有更好的意见欢迎交流 核心代码如下 <div style"display: flex; position: relative"><div style"width: 89%; margin: auto; padding: 10px 0"><div v-for"(item, index) in experien…

DeepSeek-R1-671B大模型满血版私有化部署高可用教程-SparkAi系统集成图文教程

DeepSeek官网服务器繁忙的主要原因是由于用户数量激增导致的服务器资源紧张。‌为了解决这一问题&#xff0c;DeepSeek团队已经暂停了API服务充值&#xff0c;以避免对用户造成业务影响。目前&#xff0c;存量充值金额仍可继续调用&#xff0c;但充值功能暂时不可用‌。 DeepSe…

动态扩缩容引发的JVM堆内存震荡:从原理到实践的GC调优指南

目录 一、典型案例&#xff1a;系统发布后的GC雪崩事件 &#xff08;一&#xff09;故障现象 1. 刚刚启动时 GC 次数较多 2. 堆内存锯齿状波动 3. GC日志特征&#xff1a;Allocation Failure &#xff08;二&#xff09;问题定位 二、原理深度解析&#xff1a;JVM内存弹…

OpenCV计算摄影学(14)实现对比度保留去色(Contrast Preserving Decolorization)的函数decolor()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 将彩色图像转换为灰度图像。它是数字印刷、风格化的黑白照片渲染&#xff0c;以及许多单通道图像处理应用中的基本工具。 cv::decolor 是 OpenCV…

STM32 ADC模数转换

目录 ADC简介逐次逼近型ADCSTM32的ADC输入通道规则组的转换模式单次转换、非扫描模式连续转换、非扫描模式单次转换、扫描模式连续转换、扫描模式间断模式 数据对齐转换时间校准代码软件触发单次转换非扫描模式 ADC简介 ADC&#xff08;Analog-Digital Converter&#xff09;模…

Facebook 的历史与发展:从校园网站到全球社交平台

引言 Facebook&#xff0c;这个全球最大的社交网络平台之一&#xff0c;其发展历程充满了创新和变革。从最初的校园网站到如今的全球社交平台&#xff0c;Facebook 不仅改变了人们的沟通方式&#xff0c;也重塑了信息传播和社交互动的模式。 起源&#xff1a;校园内的点子 Fa…

自然语言转SQL之Vanna.ai:AI集成数据库

自然语言转SQL之Vanna.ai&#xff1a;AI集成数据库 一、Vanna.ai是什么二、落地步骤&#xff1a;实现三层需求2.1 官方示例看效果2.2 对接自己的数据库2.3 完全本地化之路 三、构建自己的产品3.1 提问转SQL3.2 执行SQL查询实例2 要实现的功能就是&#xff1a;用中文语言同数据库…

Android 平台架构系统启动流程详解

目录 一、平台架构模块 1.1 Linux 内核 1.2 硬件抽象层 (HAL) 1.3 Android 运行时 1.4 原生 C/C 库 1.5 Java API 框架 1.6 系统应用 二、系统启动流程 2.1 Bootloader阶段 2.2 内核启动 2.3 Init进程&#xff08;PID 1&#xff09; 2.4 Zygote与System Serv…

QT 作业 C++ day5

作业 代码 MyQThread.h class MyThread : public QThread {Q_OBJECT public:MyThread(QObject *parent nullptr); protected:void run() override; signals://向ui界面发送的 "复制进度" 的信号void copy_process_signal(int index); public slots:// "复…

24、如何在C++中创建和管理线程?【中高频】 -

创建线程对象&#xff1a; //无参构造&#xff0c;该线程对象没有关联任何线程函数&#xff0c;也就是它没有启动任何线程:thread t1;//... t1 thread(func, 10);//移动构造&#xff08;调用移动赋值函数&#xff09;t1.join();//含参构造thread t1(func1, 1, 10);//thread 提…

【Altium】22.11版本后如何导出Gerber镜像层

1、 文档目标 解决 22.11 版本后如何导出 Gerber 镜像层的问题 2、 问题场景 Gerber 导出旧版本&#xff0c;在 AD 22.11 之前的 Gerber 导出中是存在镜像层的选择。 图 1 软件更新至 AD22.11 及之后版本&#xff0c;在 Gerber 导出设置中无法选择层镜像进行导出。 图 2 3、…

配置 Thunderbird 以使用 QQ 邮箱

配置 Thunderbird 以使用 QQ 邮箱 本片文章的操作系统为 windws 10 &#xff0c;thunder bird 客户端版本为 128.7.1esr(64位)。注意到其他文章的图片中 thunder bird 的 ui 界面和我这个不一样&#xff0c;导致看起来不太方便&#xff0c;所以这里写一篇博客。不同版本的 thu…

wxWidgets GUI 跨平台 入门学习笔记

准备 参考 https://wiki.wxwidgets.org/Microsoft_Visual_C_NuGethttps://wiki.wxwidgets.org/Tools#Rapid_Application_Development_.2F_GUI_Buildershttps://docs.wxwidgets.org/3.2/https://docs.wxwidgets.org/latest/overview_helloworld.htmlhttps://wizardforcel.gitb…

DeepSeek系列模型技术报告的阅读笔记

DeepSeek系列模型技术报告的阅读笔记 之前仔细阅读了DeepSeek系列模型的主要技术方面内容与发展脉络&#xff0c;以下是DeepSeek系列模型技术报告的笔记&#xff0c;有错误的地方欢迎指正&#xff01; 文章目录 DeepSeek系列模型技术报告的阅读笔记GQADeepseek MoEAbstractIn…