发明内容
有鉴于此,本发明的目的在于提供一种e2e测试的持续集成方法、装置、设备及介质,以改善上述问题。
本发明实施例提供了一种e2e测试的持续集成方法,其包括:在安装有jenkins的节点上:
安装docker;
创建jenkins pipeline任务,并对所述jenkins pipeline任务配置从源代码管理仓库获取流水线,指定gitlab的地址,分支和脚本路径;
对所述jenkins pipeline任务,通过Jenkinsfile进行参数配置,指定docker镜像,并以所述docker镜像运行docker容器,将该docker容器作为运行cypress的agent;
执行所述jenkins pipeline任务,并根据流水线,指定gitlab的地址,分支和脚本路径获取e2e测试用例;
使用docker容器运行所述e2e测试用例,以生成测试结果。
优选地,所述jenkins中安装Blue Ocean,Ansi Color,Docker,Docker pipeline,HTML publisher,Groovy,Git,Gitlab插件。
优选地,在创建jenkins pipeline任务之前,还包括:
新建第一任务,所述第一任务配置为在重启jenkins的时候被执行;
对第一任务,配置为允许从jenkins提供的其他文件加载css。
优选地,Jenkinsfile的参数配置还包括:
配置AnsiColor插件给jenkins构建日志上色;
配置Pipeline stage,设置stage名为Run,在docker中安装cypress-mochawesome-reporter插件,以在运行cypress时能执行e2e测试用例。
优选地,Jenkinsfile的参数配置还包括:
配置Pipeline stage,设置stage名为Publish html,配置report的路径和reporthtml文件的名称以及在jenkins每次build结果页面中,在左侧菜单栏显示的report名称。
本发明实施例还提供了一种e2e测试的持续集成装置,其包括:
安装单元,用于安装docker;
任务创建单元,用于创建jenkins pipeline任务,并对所述jenkins pipeline任务配置从源代码管理仓库获取流水线,指定gitlab的地址,分支和脚本路径;
配置单元,用于对所述jenkins pipeline任务,通过Jenkinsfile进行参数配置,指定docker镜像,并以所述docker镜像运行docker容器,将该docker容器作为运行cypress的agent;
执行单元,用于执行所述jenkins pipeline任务,并根据流水线,指定gitlab的地址,分支和脚本路径获取e2e测试用例;
测试单元,用于使用docker容器运行所述e2e测试用例,以生成测试结果。
优选地,在创建jenkins pipeline任务之前,还包括:第一任务创建单元,用于:
新建第一任务,所述第一任务配置为在重启jenkins的时候被执行;
对第一任务,配置为允许从jenkins提供的其他文件加载css。
优选地,Jenkinsfile的参数配置还包括:
配置AnsiColor插件给jenkins构建日志上色;
配置Pipeline stage,设置stage名为Run,在docker中安装cypress-mochawesome-reporter插件,以在运行cypress时能执行e2e测试用例;
配置Pipeline stage,设置stage名为Publish html,配置report的路径和reporthtml文件的名称以及在jenkins每次build结果页面中,在左侧菜单栏显示的report名称。
本发明实施例还提供了一种e2e测试的持续集成设备,其特征在于,包括存储器以及处理器,所述存储器内存储有计算机程序,所述计算机程序能够被所述处理器执行,以实现如上述的e2e测试的持续集成方法。
本发明实施例还提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序能够被所述计算机可读存储介质所在设备的处理器执行,以实现如上述的e2e测试的持续集成方法。
可以看出,由于本实施例使用了在docker容器中运行e2e测试用例,因此使得普通员工可以在不需要服务器root权限就能够安装运行cypress需要的必备包,从而在保证公司的数据安全的前提下提高了工作效率,具有较大的实用价值。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。
下面结合附图与具体实施方式对本发明作进一步详细描述:
请参阅图1,本发明第一实施例提供了一种e2e测试的持续集成方法,其可e2e测试的持续集成设备(以下简称集成设备)来执行,特别的,由所述集成设备内的一个或者多个处理器来执行,以至少实现如下步骤:
S101,安装docker。
其中,在本实施例中,所述集成设备也可称之为节点,所述节点可为计算机、服务器、工作站等具有数据处理能力的终端。
在本实施例中,首先在节点上安装jenkins,并在jenkins中安装Blue Ocean,AnsiColor,Docker,Docker pipeline,HTML publisher,Groovy,Git,Gitlab等插件。然后再在所述节点上安装好docker。
S102,创建jenkins pipeline任务,并对所述jenkins pipeline任务配置从源代码管理仓库获取流水线,指定gitlab的地址,分支和脚本路径。
具体地,如图2和图3所示,在Pipeline tab页中,配置从源代码管理仓库获取流水线,指定gitlab的地址,分支和脚本路径。
S103,对所述jenkins pipeline任务,通过Jenkinsfile进行参数配置,指定docker镜像,并以所述docker镜像运行docker容器,将该docker容器作为运行cypress的agent。
其中,Jenkinsfile主要用于对jenkins pipeline任务进行参数的配置。主要包含以下几个配置:
1.配置运行cypress的agent,此处agent为节点中的docker,一种可能的配置内容如下:
2.配置AnsiColor插件,用于给jenkins构建日志上色,配置内容如下:
options{
ansiColor('xterm')
}
3.配置Pipeline stage,设置stage名为Run,在docker中安装cypress-mochawesome-reporter插件,然后运行cypress,执行e2e测试用例,配置内容如下:
S104,执行所述jenkins pipeline任务,并根据流水线,指定gitlab的地址,分支和脚本路径获取e2e测试用例。
S105,使用docker容器运行所述e2e测试用例,以生成测试结果。
在本实施例中,在执行所述jenkins pipeline任务后,节点根据流水线,指定gitlab的地址,分支和脚本路径获取e2e测试用例,并通过docker容器运行所述e2e测试用例,以生成测试结果。
可以看出,由于本实施例使用了在docker容器中运行e2e测试用例,因此使得普通员工可以在不需要服务器root权限就能够安装运行cypress需要的必备包,从而在保证公司的数据安全的前提下提高了工作效率,具有较大的实用价值。
以下对本发明的一些优选实施例做更进一步的描述。
在创建jenkins pipeline任务之前,还包括:
新建第一任务,所述第一任务配置为在重启jenkins的时候被执行;
具体地,可在“Build trigger”tab中,输入“Build when job nodes start”使得重启jenkins的时候执行所述第一任务。
对第一任务,配置为允许从jenkins提供的其他文件加载css。
其中,在“Build trigger”tab中,设置“Build when job nodes start”,这是为了重启jenkins的时候会执行所述第一任务。
然后在“Build”tab中,点击“ADD BUILDER STEP”,选择“Execute system groovyscript”,在“Groovy script”中输入System.setProperty("hudson.model.DirectoryBrowserSupport.CSP","sandbox;style-src'self';"),其中style-src‘self’,意思是允许从jenkins提供的其他文件加载css,这样就可以加载css资源,解决了由于Jenkins的默认安全策略,导致引入了其他css或者js资源的html页面显示不了的问题,如图4所示。
优选的,在Jenkinsfile的配置中,还包括:
配置Pipeline stage,设置stage名为Publish html,配置report的路径(reportDir)和report html文件的名称(reportFiles)以及在jenkins每次build结果页面中,左侧菜单栏显示的report名称(reportName)
如此,使用了cypress-mochawesome-reporter的npm包和Jenkins的HTMLPublisher插件结合去生成带错误用例运行时截图的网页报告,解决了allure报告中没有错误截图的问题,方便定位问题,如图5所示。
其中,需要说明的是,图5仅仅是为了给出网页报告的各部分的分布示意,其具体内容并不影响对本发明的理解。
请参阅图6,本发明第二实施例还提供了一种e2e测试的持续集成装置,其包括:
安装单元210,用于安装docker。
任务创建单元220,用于创建jenkins pipeline任务,并对所述jenkins pipeline任务配置从源代码管理仓库获取流水线,指定gitlab的地址,分支和脚本路径。
配置单元230,用于对所述jenkins pipeline任务,通过Jenkinsfile进行参数配置,指定docker镜像,并以所述docker镜像运行docker容器,将该docker容器作为运行cypress的agent。
执行单元240,用于执行所述jenkins pipeline任务,并根据流水线,指定gitlab的地址,分支和脚本路径获取e2e测试用例。
测试单元250,用于使用docker容器运行所述e2e测试用例,以生成测试结果。
优选地,在创建jenkins pipeline任务之前,还包括:第一任务创建单元,用于:
新建第一任务,所述第一任务配置为在重启jenkins的时候被执行;
对第一任务,配置为允许从jenkins提供的其他文件加载css。
优选地,Jenkinsfile的编写包括:
配置运行cypress的agent为所述docker;
配置AnsiColor插件给jenkins构建日志上色;
配置Pipeline stage,设置stage名为Run,在docker中安装cypress-mochawesome-reporter插件,以在运行cypress时能执行e2e测试用例;
配置Pipeline stage,设置stage名为Publish html,配置report的路径和reporthtml文件的名称以及在jenkins每次build结果页面中,在左侧菜单栏显示的report名称。
本发明第三实施例还提供了一种e2e测试的持续集成设备,其特征在于,包括存储器以及处理器,所述存储器内存储有计算机程序,所述计算机程序能够被所述处理器执行,以实现如上述的e2e测试的持续集成方法。
本发明第四实施例还提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序能够被所述计算机可读存储介质所在设备的处理器执行,以实现如上述的e2e测试的持续集成方法。
在本发明实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,电子设备,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random AcCE节点ss Memory)、磁碟或者光盘等各种可以存储程序代码的介质。需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。