CN112732265A - 一种数据处理方法和相关装置 - Google Patents

一种数据处理方法和相关装置 Download PDF

Info

Publication number
CN112732265A
CN112732265A CN201911038478.2A CN201911038478A CN112732265A CN 112732265 A CN112732265 A CN 112732265A CN 201911038478 A CN201911038478 A CN 201911038478A CN 112732265 A CN112732265 A CN 112732265A
Authority
CN
China
Prior art keywords
character string
data packet
source character
target source
target
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201911038478.2A
Other languages
English (en)
Other versions
CN112732265B (zh
Inventor
张林悦
姚海波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201911038478.2A priority Critical patent/CN112732265B/zh
Publication of CN112732265A publication Critical patent/CN112732265A/zh
Application granted granted Critical
Publication of CN112732265B publication Critical patent/CN112732265B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/48Incremental compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/368Test management for test version control, e.g. updating test cases to a new software version
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请实施例公开了一种数据处理方法和相关装置,该方法包括:获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述目标源字符串是由目标终端针对与第一应用相关联的小程序对应的历史源字符串进行变更后所确定的;根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包;将所述测试数据包发送至与所述第一应用对应的第一业务服务器,以使所述第一业务服务器将所述测试数据包分发给目标测试用户。采用本申请,可以提高生成测试数据包的效率,并可以避免开发资源的浪费。

Description

一种数据处理方法和相关装置
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据处理方法和相关装置。
背景技术
在现有技术,开发人员可以通过开发终端的开发界面上的编译按钮,手动进行编译,并通过上传按钮手动向微信服务器上传针对小程序所编译成功的测试数据包。换言之,现有技术在生成测试数据包的过程中需要消耗较长的人机交互操作,从而降低了测试包的生成效率。
此外,在当前的小程序的开发场景中,每个开发终端均可以用于进行代码开发以及代码编译,从而使得每个开发终端均可以将各自所生成的测试数据包直接推送给微信服务器,即现有技术中每个开发终端可与微信服务器之间直接进行数据交互,进而会造成微信服务器可能重复接收到多个开发终端所上传的测试数据包的现象。比如,微信服务器会用最后一次接收到的测试数据包覆盖之前所接收到的测试数据包,以至于在当前小程序的开发过程中,存在开发资源的浪费的现象。
申请内容
本申请实施例提供一种数据处理方法和相关装置,可以提高测试数据包的生成效率,并可以避免开发资源的浪费。
本申请实施例一方面提供了一种数据处理方法,所述方法应用于持续集成服务器,包括:
获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述目标源字符串是由目标终端针对与第一应用相关联的小程序对应的历史源字符串进行变更后所确定的;
根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包;
将所述测试数据包发送至与所述第一应用对应的第一业务服务器,以使所述第一业务服务器将所述测试数据包分发给目标测试用户。
其中,所述获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息,包括:
获取所述业务管理仓库对应的业务管理服务器针对目标源字符串发送的业务提交通知信息;所述业务提交通知信息中包含与所述目标源字符串对应的版本信息的哈希值;
根据所述哈希值从所述业务管理仓库中拉取所述目标源字符串以及所述目标字符串对应的增量变更属性信息。
其中,所述获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息,包括:
在当前时长达到定时拉取时长时,获取针对目标源字符串的源码拉取指令;
根据所述源码拉取指令从所述业务管理仓库中拉取所述目标源字符串以及所述目标字符串对应的增量变更属性信息。
其中,所述业务管理仓库为业务管理服务器中用于进行数据共享的代码数据库;所述代码数据库包含与所述小程序相关联的至少一个终端上传的业务代码数据;所述业务代码数据包含所述至少一个终端中的目标终端所上传的所述目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述业务管理服务器用于对所述目标终端所上传的目标源字符串进行分布式存储,且用于对所述目标源字符串的版本信息进行版本管理。
其中,所述根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包,包括:
根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的待编译数据包;
根据所述小程序对应的依赖数据文件,对所述待便于数据包进行编译处理,在所述待编译数据包的编译状态为成功状态时,得到所述小程序对应的测试数据包。
其中,所述根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的待编译数据包,包括:
对所述目标源字符串进行异常检测;
在检测到所述目标源字符串不满足异常拉取条件时,根据所述增量变更属性信息,确定所述目标源字符串在所述历史源字符串中的位置信息;
基于所述位置信息将所述目标源字符串嵌入所述历史源字符串,将嵌入有所述目标源字符串的历史源字符串作为所述小程序对应的待编译数据包。
其中,
所述方法还包括:
在检测到所述目标源字符串满足所述异常拉取条件时,生成所述目标源字符串对应的异常拉取日志信息;
根据所述异常拉取日志信息中的至少一个异常拉取因素,生成所述小程序对应的第一异常提醒信息;
将所述第一异常提醒信息通过与所述小程序相关联的第二业务服务器,推送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组;所述群组包含至少一个参与开发所述小程序的开发用户。
其中,所述根据所述小程序对应的依赖数据文件,对所述待编译数据包进行编译处理,在所述待编译数据包的编译状态为成功状态时,得到所述小程序对应的测试数据包,包括:
获取所述待编译数据包相关联的依赖数据包,在所述依赖数据包的安装状态为成功状态时,得到用于对所述待编译数据包进行编译的依赖数据文件;
根据所述依赖数据文件中所提供的第三方类库,对所述待编译数据包进行代码编译,并获取所述小程序对应的分包机制;
基于所述分包机制将所述待编译数据包划分为N个分包;N为正整数;所述N个分包中包含与所述小程序的主页面相关联的第一数据包,以及与所述小程序的子页面相关联的第二数据包;
在所述待编译数据包的编译状态为成功状态时,基于所述第一数据包和所述第二数据包,得到所述小程序对应的测试数据包。
其中,所述方法还包括:
在所述依赖数据包的安装状态为失败状态时,生成安装异常日志信息;
基于所述安装异常日志信息相关联的安装异常因素生成安装错误提示信息;
若所述安装异常因素属于与所述目标源字符串无关的环境异常因素,则将所述安装错误提示信息作为所述小程序对应的第一类异常提醒信息;
若所述安装异常因素属于与所述目标源字符串相关的代码异常因素,则获取所述目标源字符串对应的代码提交记录以及与所述代码提交记录相关联的开发人员信息,将所述代码提交记录以及所述开发人员信息补充至所述安装错误提示信息,并将补充后的安装错误提示信息作为所述小程序对应的第二类异常提醒信息。
其中,所述方法还包括:
在所述待编译数据包的编译状态为失败状态时,生成所述待编译数据包对应的编译错误日志信息,对所述编译错误日志信息进行错误分析,得到所述待编译数据包对应的编译错误因素;所述编译错误因素包含所述待编译数据包中的目标源字符串对应的静态语法错误;
基于所述静态语法错误生成所述小程序对应的第二异常提醒信息;
将所述第二异常提醒信息通过与所述小程序相关联的第二业务服务器,发送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组。
其中,所述将所述测试数据包发送至与所述第一应用对应的第一业务服务器,包括:
在所述小程序对应的持续集成平台上,获取所述持续集成平台提供的目标接口;所述目标接口包含与所述小程序相关联的IDE接口;
调用所述IDE接口将所述测试数据包模拟上传至与所述第一应用对应的第一业务服务器。
其中,所述方法还包括:
若在响应时长内获取到所述第一业务服务器针对所述测试数据包返回的响应文本信息,则确定完成对所述测试数据包的上传;
若在所述响应时长内未获取到所述第一业务服务器返回的响应文本信息,则生成异常上传日志信息,根据所述异常上传日志信息中的异常上传因素生成所述小程序对应的第三异常提醒信息,将所述第三异常提醒信息通过与所述小程序相关联的第二业务服务器,发送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组。
本申请实施例一方面提供了一种数据处理装置,所述装置应用于持续集成服务器,包括:
字符串获取模块,用于获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述目标源字符串是由目标终端针对与第一应用相关联的小程序对应的历史源字符串进行变更后所确定的;
字符串嵌入模块,用于根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包;
数据包发送模块,用于将所述测试数据包发送至与所述第一应用对应的第一业务服务器,以使所述第一业务服务器将所述测试数据包分发给目标测试用户。
其中,所述字符串获取模块包括:
通知获取单元,用于获取所述业务管理仓库对应的业务管理服务器针对目标源字符串发送的业务提交通知信息;所述业务提交通知信息中包含与所述目标源字符串对应的版本信息的哈希值;
第一获取单元,用于根据所述哈希值从所述业务管理仓库中拉取所述目标源字符串以及所述目标字符串对应的增量变更属性信息。
其中,所述字符串获取模块包括:
指令获取单元,用于在当前时长达到定时拉取时长时,获取针对目标源字符串的源码拉取指令;
第二获取单元,用于根据所述源码拉取指令从所述业务管理仓库中拉取所述目标源字符串以及所述目标字符串对应的增量变更属性信息。
其中,所述业务管理仓库为业务管理服务器中用于进行数据共享的代码数据库;所述代码数据库包含与所述小程序相关联的至少一个终端上传的业务代码数据;所述业务代码数据包含所述至少一个终端中的目标终端所上传的所述目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述业务管理服务器用于对所述目标终端所上传的目标源字符串进行分布式存储,且用于对所述目标源字符串的版本信息进行版本管理。
其中,所述字符串嵌入模块包括:
字符嵌入单元,用于根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的待编译数据包;
编译处理单元,用于根据所述小程序对应的依赖数据文件,对所述待便于数据包进行编译处理,在所述待编译数据包的编译状态为成功状态时,得到所述小程序对应的测试数据包。
其中,所述字符嵌入单元包括:
异常检测子单元,用于对所述目标源字符串进行异常检测;
位置确定子单元,用于在检测到所述目标源字符串不满足异常拉取条件时,根据所述增量变更属性信息,确定所述目标源字符串在所述历史源字符串中的位置信息;
字符嵌入子单元,用于基于所述位置信息将所述目标源字符串嵌入所述历史源字符串,将嵌入有所述目标源字符串的历史源字符串作为所述小程序对应的待编译数据包。
其中,
所述字符嵌入单元还包括:
第一日志生成子单元,用于在检测到所述目标源字符串满足所述异常拉取条件时,生成所述目标源字符串对应的异常拉取日志信息;
第一异常提醒子单元,用于根据所述异常拉取日志信息中的至少一个异常拉取因素,生成所述小程序对应的第一异常提醒信息;
第一提醒推送子单元,用于将所述第一异常提醒信息通过与所述小程序相关联的第二业务服务器,推送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组;所述群组包含至少一个参与开发所述小程序的开发用户。
其中,所述编译处理单元包括:
依赖获取子单元,用于获取所述待编译数据包相关联的依赖数据包,在所述依赖数据包的安装状态为成功状态时,得到用于对所述待编译数据包进行编译的依赖数据文件;
编译子单元,用于根据所述依赖数据文件中所提供的第三方类库,对所述待编译数据包进行代码编译,并获取所述小程序对应的分包机制;
分包子单元,用于基于所述分包机制将所述待编译数据包划分为N个分包;N为正整数;所述N个分包中包含与所述小程序的主页面相关联的第一数据包,以及与所述小程序的子页面相关联的第二数据包;
测试包生成子单元,用于在所述待编译数据包的编译状态为成功状态时,基于所述第一数据包和所述第二数据包,得到所述小程序对应的测试数据包。
其中,所述编译处理单元还包括:
第二日志生成子单元,用于在所述依赖数据包的安装状态为失败状态时,生成安装异常日志信息;
安装错误子单元,用于基于所述安装异常日志信息相关联的安装异常因素生成安装错误提示信息;
字符无关子单元,用于若所述安装异常因素属于与所述目标源字符串无关的环境异常因素,则将所述安装错误提示信息作为所述小程序对应的第一类异常提醒信息;
字符相关子单元,用于若所述安装异常因素属于与所述目标源字符串相关的代码异常因素,则获取所述目标源字符串对应的代码提交记录以及与所述代码提交记录相关联的开发人员信息,将所述代码提交记录以及所述开发人员信息补充至所述安装错误提示信息,并将补充后的安装错误提示信息作为所述小程序对应的第二类异常提醒信息。
其中,所述编译处理单元还包括:
编译错误子单元,用于在所述待编译数据包的编译状态为失败状态时,生成所述待编译数据包对应的编译错误日志信息,对所述编译错误日志信息进行错误分析,得到所述待编译数据包对应的编译错误因素;所述编译错误因素包含所述待编译数据包中的目标源字符串对应的静态语法错误;
第二异常提醒子单元,用于基于所述静态语法错误生成所述小程序对应的第二异常提醒信息;
第二提醒推送子单元,用于将所述第二异常提醒信息通过与所述小程序相关联的第二业务服务器,发送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组。
其中,所述数据包发送模块包括:
接口获取单元,用于在所述小程序对应的持续集成平台上,获取所述持续集成平台提供的目标接口;所述目标接口包含与所述小程序相关联的IDE接口;
数据包上传单元,用于调用所述IDE接口将所述测试数据包模拟上传至与所述第一应用对应的第一业务服务器。
其中,所述装置还包括:
响应获取模块,用于若在响应时长内获取到所述第一业务服务器针对所述测试数据包返回的响应文本信息,则确定完成对所述测试数据包的上传;
异常上传模块,用于若在所述响应时长内未获取到所述第一业务服务器返回的响应文本信息,则生成异常上传日志信息,根据所述异常上传日志信息中的异常上传因素生成所述小程序对应的第三异常提醒信息,将所述第三异常提醒信息通过与所述小程序相关联的第二业务服务器,发送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组。
本申请一方面提供了一种计算机设备,包括:处理器、存储器、网络接口;
所述处理器与存储器、网络接口相连,其中,网络接口用于提供数据通信功能,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以执行本申请实施例中上述一方面中的方法。
本申请一方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行本申请实施例中上述一方面中的方法。
本申请实施例可以获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述目标源字符串是由目标终端针对与第一应用相关联的小程序对应的历史源字符串进行变更后所确定的;根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包;将所述测试数据包发送至与所述第一应用对应的第一业务服务器,以使所述第一业务服务器将所述测试数据包分发给目标测试用户。由此可见,本申请可以通过引入的持续集成服务器,可以将从业务管理仓库上所获取到的目标源字符串(比如,最新上传的源代码)嵌入到历史源字符串中,该历史源字符串可以为该持续集成服务器中已有的源代码(比如,上一次上传的源代码),通过该持续集成服务器可以提供持续集成服务,以自动生成测试数据包,从而可以避免人机交互,进而可以在无按钮的情况下提高测试数据包的生成效率。此外,通过在持续集成服务器中自动生成测试数据包,还可以避免目标终端(即开发终端)与第一业务服务器(比如,微信服务器)之间直接进行数据交互,从而可以在小程序的开发过程中,充分发挥解耦协作,以避免开发资源的浪费。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构的结构示意图;
图2是本申请实施例提供的一种数据处理方法的流程示意图;
图3是本申请实施例提供的一种进行按需拉取的场景示意图;
图4是本申请实施例提供的一种执行持续集成任务的流程示意图;
图5是本申请实施例提供的一种生成安装异常日志信息的场景示意图;
图6是本申请实施例提供的另一种数据处理方法的流程示意图;
图7是本申请实施例提供的一种上传测试数据包的场景示意图;
图8是本申请实施例提供的一种根据多个开发终端进行协同开发的场景示意图;
图9是本申请实施例提供的一种数据处理装置的结构示意图;
图10是本申请实施例提供的一种计算机设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,是本发明实施例提供的一种网络架构的结构示意图。如图1所示,所述网络架构可以包括目标终端7000n,业务管理服务器6000,持续集成服务器2000,第一业务服务器4000、第一用户终端集群,第二业务服务器5000和第二用户终端集群。
如图1所示,所述第一用户终端集群可以包括多个用户终端,所述多个用户终端具体可以包括图1所示的用户终端3000a、…、用户终端3000b;如图1所示,用户终端3000a、…、用户终端3000b可以分别与所述第一业务服务器4000进行网络连接,以便于能够在该第一用户终端集群中通过该第一应用服务器4000进行数据交互。
进一步地,该网络架构还可以包括第二业务服务器5000和第二用户终端集群,所述第二用户终端集群可以包括多个用户终端,如图1所示,具体可以包括用户终端3000c、…、用户终端3000n;如图1所示,用户终端3000c、…、用户终端3000n可以分别与所述第二应用服务器5000进行网络连接,以便于能够在该第二用户终端集群中通过该第二应用服务器5000进行数据交互。
其中,第一用户终端集群中的各用户终端(例如,用户终端3000a)中所安装的应用中可以包括第一应用,该第一应用可以为一种即时通讯应用。如图1所示,该第一用户终端集群中的每个用户终端均可以通过该第一应用中的即时通讯平台与所述第一业务服务器4000实现用户数据交互。
同理,如图1所示,该第二用户终端集群中的各用户终端(例如,用户终端3000c)中所安装的应用中可以包括第二应用,该第二应用可以理解为一种办公应用,该办公应用可以称之为另一种即时通讯应用;如图1所示,该第二用户终端集群中的每个用户终端均可以通过该第二应用中的即时通讯平台与所述第二业务服务器5000实现用户数据交互。
其中,可以理解的是,本申请实施例可以根据第一应用(比如,微信应用)的开发框架,为小程序的开发提供一套用于实现自动检测、自动生成测试数据包以及自动上传测试数据包的持续集成平台。
如图1所示,本申请可以在小程序的开发场景下,引入持续集成服务器2000,以更改现有技术在开发小程序时的网络架构,比如,此时,用于进行小程序开发的开发终端(例如,图1所示的目标终端7000n)将无法与该持续集成服务器2000直接进行数据交互。所以,本申请实施例通过图1所示的网络架构,可以避免在小程序开发过程中因多个开发终端直接与第一业务服务器4000进行数据交互,而造成第一业务服务器4000重复接收到多个开发终端所上传的多个测试数据包的现象,进而可以避免开发资源的浪费。此外,通过引入的持续集成服务器2000还可以在无按钮情况下自动编译生成测试数据包,并自动上传所生成的测试数据包,从而可以提高测试数据包的生成效率。
其中,随着互联网技术的发展,小程序应运而生,所谓小程序(Mini Program)是一种不需要下载安装即可使用的应用程序。为了向用户提供更多样化的业务服务,开发者可以为终端的应用(例如,第一应用,该第一应用可以具体包含即时通信应用、购物应用、邮件应用等)开发相应的小程序,该小程序可以作为子应用被嵌入至终端的应用(即第一应用)中,通过运行第一应用内的子应用(即对应的小程序)能够为用户提供相应的业务服务。
其中,为便于理解,本申请实施例以第一应用为即时通讯应用中的微信应用为例,以阐述在前述小程序的开发场景下,通过图1所示的持续集成服务器2000生成测试数据包的具体过程。其中,本申请实施例可以将用于进行源代码(即源字符串)存储和用于进行版本管理的服务器统称为git服务器,该git服务器可以为图1所述的业务管理服务器6000。应当理解,本申请实施例中的业务管理服务器6000在用于进行版本管理的过程中,主要是对开发终端所上传的源代码的版本信息进行哈希计算,以唯一的得到能够用于标识该源代码的版本信息的哈希值。其中,应当理解,与该业务管理服务器6000具有网络连接关系的开发终端可以为多个,还可以为一个,这里将不对开发终端的数量进行限制。
其中,git服务器(即业务管理服务器6000)可以用于对每个开发终端所上传的源代码进行分布式存储,使得每个开发终端可以通过该git服务器(即前述业务管理服务器6000)中的业务管理仓库实现数据共享。其中,应当理解,本申请实施例可以将git服务器上的业务管理仓库称之为远程仓库。此外,可以理解的是,针对同一小程序所创建的项目A进行开发的过程中,可以通过git服务器帮助多个终端之间进行解耦协作(即分布式开发),即当确定获取到针对该小程序的项目A的新的源代码时,可以在各开发终端进行该新的源代码的同步。
其中,为便于对每个终端所上传的源代码进行区分,本申请实施例可以通过上述git服务器对每个源代码对应的版本信息的哈希值进行计算,以得到用于唯一标识各源代码的版本信息的哈希值。例如,以多个开发终端中的开发终端A和开发终端B为例,该git服务器可以快速计算得到该开发终端A针对前述项目A最新开发的源代码1的版本信息的哈希值(例如,哈希值1),也可以得到开发终端B针对前述项目A最新开发的源代码2的版本信息的哈希值(比如,哈希值2)。应当理解,本申请实施例的持续集成服务器通过可以通过哈希值,对获取到的最新开发的源代码的完整性进行校验,以确保参与进行持续集成任务的目标源代码的完整性。
可以理解的是,本申请实施例可以将针对某个项目所最新开发的源代码称之为目标源代码,也可以称之为目标源字符串。比如,在当前时间为T1时刻时,本申请实施例可以将该开发终端A本次所开发、上传的源代码称之为目标源代码(即目标源字符串),并将开发终端B在T2时刻(即T1的上一时刻)所开发、上传的源代码称之为历史源代码,也可以称之为历史源字符串。此外,可以理解的是,开发终端A可以预先通过源码获取指令从前述业务管理仓库(即远程仓库)上将开发终端B所上传的源代码同步至本地仓库1进行存储,以使开发人员可以在开发终端中针对已存储的历史源字符串所在的工作文件进行变更处理(例如,可以进行源代码的删除操作、源代码的增加操作等)。
为便于理解,本申请实施例以多个开发终端中的一个开发终端为例,该开发终端可以为图1所示的目标终端7000n。如图1所示,目标终端7000n对应的开发人员(例如,开发人员A)可以在本地完成针对历史源字符串所属的工作文件的变更操作(例如,删除操作,增加操作以及更正操作等)时,可以在该工作文件中将该变更操作对应的目标源代码(即图1所示的目标源字符串n)提交至图1所示的业务管理仓库进行存储。应当理解,当业务管理仓库中存在目标终端7000n提交的目标源字符串n时,可以通知图1所示的持续集成服务器2000针对该目标源字符串n进行同步更新,即该持续集成服务器可以在获取到提交通知(即业务提交通知信息)时,从业务管理仓库上按需拉取目标源字符串n。
可以理解的是,该持续集成服务器2000可以用于提供针对小程序的持续集成服务。换言之,业务管理服务器6000在将历史源字符串同步给目标终端7000n的时候,也可以将历史源字符串一并同步给图1所示的持续集成服务器2000。所以,图1所示的持续集成服务器2000的本地仓库2中可以存储有前述历史源字符串。此外,可以理解的是,当持续集成服务器2000从图1所示的业务管理仓库上拉取到目标源字符串n时,可以一并获取到该目标源字符串n对应的增量变更属性信息。比如,该增量变更属性信息具体可以包含:在前述历史源字符串所在的工作文件中的哪一行增加了源代码,在哪一行删除了源代码等具体的位置信息。
进一步的,持续集成服务器2000可以根据该增加变更属性信息自动将该目标源字符串n嵌入历史源字符串中的相应位置,从而可以根据嵌入有该目标源字符串n的历史源字符串进行自动编译,以自动生成前述小程序对应的测试数据包。
如图1所示,持续集成服务器2000可以将自动生成的测试数据包上传给图1所示的第一业务服务器4000。应当理解,该第一业务服务器4000可以为前述第一应用对应的后台服务器。为便于理解,本申请实施例可以以该第一应用为前述即时通讯应用为例,比如,该即时通讯应用可以为微信应用,此时,图1所示的第一业务服务器4000可以为微信服务器。可以理解的是,当开发的小程序的体验版运行在集成有该微信应用的用户终端(这里可以为目标测试用户对应的测试用户终端)中时,可以通过该微信服务器中的体验数据包提供相应的业务服务。
其中,如图1所示,该第一业务服务器4000可以在获取到该小程序对应的测试数据包时,将该测试数据包作为体验数据包,并对其进行存储,进而可以将该体验数据包对应的分身标识图像(例如,二维码)下发给目标测试用户,以使目标测试用户可以在运行有第一应用(比如,前述微信应用)的测试用户终端中通过识别该二维码访问该小程序的体验版,从而可以在第一应用中启动该小程序的体验版。
其中,可以理解的是,本申请实施例中的目标测试用户可以为图1所示的第一用户终端集群中的多个用户终端分别对应的用户。该第一用户终端集群中的多个用户终端具体可以为图1所示的用户终端3000a,...,用户终端3000b。本申请实施例可以将该第一用户终端集群中的指定用户(即前述目标测试用户)所对应的用户终端称之为测试用户终端。此外,应当理解,在第一应用中启动该小程序的过程中,相应的测试用户终端(比如,图1所示的用户终端3000a)可以从该第一业务服务器4000上获取前述体验数据包,以加载前述测试数据包中的源代码,进而可以为目标测试用户提供相应的业务服务。比如,若该小程序为阅读应用类小程序中的微信读书小程序,则可以为目标测试用户提供针对该微信读书小程序中的电子读物的阅读服务。
如图1所示,若持续集成服务器2000在执行持续集成任务的过程中,编译失败时,可以将该持续集成任务的任务状态设置为失败状态,并可以在编译失败时生成相应的异常提醒信息,进而可以将该异常提醒信息推送给图1所示的第二业务服务器5000,以使第二业务服务器5000可以找到参与前述小程序开发的开发人员所属的群组,以在企业微信(即第二应用)中进行异常提醒,从而可以确保位于该企业微信内的群组中的相应的开发人员,可以获知前述异常提醒信息。可以理解的是,该第二业务服务器5000可以为上述第二应用(比如,上述另一种即时通讯应用中的企业微信应用),这里将不对其进行限制。
应当理解,后续开发人员还可以在开发终端中的本地继续针对包含该目标源代码的工作文件执行新的变更操作,进而可以将该新的变更操作对应的新的目标源字符串提交至前述业务管理仓库。由此可见,本申请实施例中的开发终端在完成开发任务时,无需提交针对小程序的项目的整个工作文件,从而可以避免开发过程中的源代码的重复提交。
其中,持续集成服务器2000获取目标源字符串以及所述目标源字符串对应的增量变更属性信息、以及自动生成和上传测试数据包具体过程,可以参见如下图2至图8所对应的实施例所提供的实现方式。
进一步地,请参见图2,是本申请实施例提供的一种数据处理方法的流程示意图。所述数据处理方法的执行主体可以为持续集成服务器,该持续集成服务器可以为上述图1所对应实施例中的持续集成服务器2000。如图2所示,本申请实施例提供的方法可以包括:
步骤S101,获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息;
具体地,在小程序的开发场景下,持续集成服务器可以通过以下两种方式:按需拉取方式和定时拉取方式中的任意一种方式从业务管理仓库(比如,上述图1所描述的远程仓库)中获取最新的源代码(即目标源字符串),并可以在该持续集成服务器中针对当前所获取到的目标源字符串执行持续集成任务。可以理解的是,该持续集成服务器在获取到目标源字符串的同时,可以一并获取到该目标源字符串对应的增量变更属性信息。
其中,所述业务管理仓库可以为业务管理服务器中用于进行数据共享的代码数据库(比如,上述git仓库);所述代码数据库可以包含与所述小程序相关联的至少一个终端上传的业务代码数据;所述业务代码数据可以包含所述至少一个终端中的目标终端所上传的所述目标源字符串以及所述目标源字符串对应的增量变更属性信息;其中,所述业务管理服务器可以用于对所述目标终端所上传的目标源字符串进行分布式存储,且用于对所述目标源字符串的版本信息进行版本管理。
其中,所述业务管理仓库可以为上述图1所对应实施例中的远程仓库,该远程仓库可以为前述git服务器对应的git仓库。可以理解的是,本申请实施例中的git仓库可以为独立于git服务器的存储设备,可选的,git仓库可以为集成安装在git服务器中的存储设备,这里将不对其进行限定。应当理解,该git仓库可以用于统一存储每个开发终端所上传的开发数据包,该开发数据包中可以包含每个开发终端所上传的目标源字符串(即目标源代码)以及目标源字符串对应的增量变更信息。此外,该git仓库还可以用于对接收到的数据包的版本信息更新更新处理,即可以用于进行版本管理。比如,git仓库可以用于对每次接收到的目标源字符串(即目标源代码)对应的版本信息的哈希值进行哈希计算,以通过具有唯一性的哈希值在该git服务器中建立用于进行源代码索引的索引文件。
其中,该索引文件中可以记录每次提交到git仓库的源代码对应的哈希值,例如,可以记录本次所提交的目标源代码(例如,当前时刻所提交的目标源代码)所对应的哈希值1,还可以记录历史所提交的目标源代码(例如,上一时刻所提交的目标源代码)对应的哈希值2。比如,通过该索引文件可以快速地从git仓库中获取到目标终端先前所提交过的相应版本信息对应的历史源字符串,进而可以通过版本回滚指令进行版本回滚。其中,本申请实施例可以将历史所提交的目标源代码统称为上述历史源代码,也可以将该历史源代码称之为历史源字符串。
换言之,本申请实施例所描述的git仓库可以理解为一种能够对获取到的目标源代码进行分布式存储的托管工具,通过该git仓库可以便捷地对小程序开发过程中所提交的源代码进行版本管理和分布式开发。其中,所述分布式开发是指该与该业务管理服务器具有网络连接关系的开发终端,均可以通过git仓库实现数据共享功能,比如,该git仓库可以保证每个开发人员均能够根据源码拉取指令(比如,git命令中的“fetch命令”),从该git仓库上获取到最近更新的源代码,从而可以在各自的开发终端中针对前述项目进行分布式开发。其中,可以理解的是,该持续集成服务器也可以通过调用该“fetch命令”,从远程仓库(即git仓库)中抓取该持续集成服务器的本地仓库所没有的数据,从而可以将git仓库上最新更新的目标源字符串抓取到本地(即该持续集成服务器的本地仓库),进而可以进一步执行步骤S102,以在该持续集成服务器中执行持续集成任务。
其中,所述按需拉取方式是指所述持续集成服务器可以在获取到所述业务管理仓库对应的业务管理服务器(即前述git服务器)主动发送的业务提交通知信息时,从git服务器上拉取开发人员(例如,前述开发人员A)最新上传的源代码(即上述目标源字符串)。具体的,持续集成服务器可以获取所述业务管理仓库对应的业务管理服务器针对目标源字符串发送的业务提交通知信息;其中,所述业务提交通知信息中包含与所述目标源字符串对应的版本信息的哈希值;进一步的,持续集成服务器可以根据所述哈希值从所述业务管理仓库中拉取所述目标源字符串以及所述目标字符串对应的增量变更属性信息。
为便于理解,进一步的,请参见图3,是本申请实施例提供的一种进行按需拉取的场景示意图。如图3所示的业务管理服务器可以在检测到git仓库(即图3所示的业务管理仓库)中新增有开发终端(即图3所示的目标终端)最新上传的开发数据包中的目标源字符串时,可以基于该目标源字符串对应的版本信息的哈希值(例如,该哈希值可以为固定长度的字符串,比如,以16进制表示的16位的字符串)生成图3所示的业务提交通知信息,该业务提交通知信息用于通知图3所示的持续集成服务器进行按需拉取,比如,持续集成服务器可以基于目标源字符串的哈希值,快速索引到存储在图3所示的业务管理仓库中的目标源字符串,并将该目标源字符串抓取到该持续集成服务器的本地仓库,以使该持续集成服务器可以进行哈希校验,从而可以在确定本次抓取到的目标源字符串的哈希值与上一次抓取到的目标源字符串(即上述历史源字符串)的哈希值不一致时,根据获取到的增量变更属性信息确定所述目标源字符串相对于所述历史源字符串的位置信息。其中,所述业务提交通知信息中可以包含与所述目标源字符串对应的版本信息的哈希值;可以理解的是,该哈希值可以用于唯一标识存储在git仓库(即前述git仓库)中的目标源字符串的版本信息。换言之,如图3所示,持续集成服务器可以根据目标源字符串对应的哈希值,准确从所述业务管理仓库中拉取到所述目标源字符串,并在获取到所述目标源字符串的同时,一并获取到所述目标字符串对应的增量变更属性信息。
其中,可以理解的是,本申请实施例还可以将业务管理服务器每次所接收到的数据包中的源代码称之为源字符串。其中,本申请实施例可以将目标终端在当前时刻所提交上传的源字符串称之为目标源字符串,该目标源字符串可以为上述图1所对应实施例中的目标源代码。此外,本申请实施例可以将目标终端在上一时刻所提交上传的源字符串称之为历史源字符串,该历史源字符串可以为上述图1所对应实施例中的历史源代码。
应当理解,所述定时拉取方式是指持续集成服务器可以用于判断当前时间是否达到定时拉取时长,并可以在确定当前时间达到定时拉取时长时,定时从git服务器(即上述业务管理服务器)上拉取开发人员所最新上传的目标源字符串。换言之,持续集成服务器在当前时长达到定时拉取时长时,获取针对目标源字符串的源码拉取指令(即自动调用目标源字符串对应的源码获取指令,该源码获取指令可以为上述图1所对应实施例中的git命令);进一步的,该持续集成服务器可以根据所述源码拉取指令从所述业务管理仓库(例如,图3所对应实施例中的业务管理仓库)中拉取所述目标源字符串以及所述目标字符串对应的增量变更属性信息。
其中,本申请实施例中的所开发的小程序可以为上述图1所对应实施例中所描述的小程序。该小程序具体可以包括以下至少一个小程序,比如,电子阅读类小程序、娱乐应用类小程序、购物应用类小程序等,这里将不对其进行限定。应当理解,在小程序的开发过程中,可以通过引入上述持续集成服务器进行自动编译,并在编译成功时,自动将自动编译后所得到的测试数据包给到微信服务器,以使微信服务器可以将该测试数据包作为体验数据包,进而可以将该体验数据包推送给目标测试用户进行体验。
步骤S102,根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包。
具体的,持续集成服务器可以根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的待编译数据包;进一步的,持续集成服务器可以根据所述小程序对应的依赖数据文件,对所述待便于数据包进行编译处理,在所述待编译数据包的编译状态为成功状态时,得到所述小程序对应的测试数据包。
可以理解的是,如上述图3所示,开发人员A上传到上述业务管理仓库的目标源代码,可以为该开发人员A针对历史源字符串所属的工作文件进行变更后所得到的。比如,开发人员A在历史源字符串所属的工作文件中增加了几行源代码A(比如,这几行源代码A可以为上述图3所示的目标源字符串),则上述图3所示的业务管理仓库所接收到的目标源代码就可以为该开发人员A所改动的这几行源代码A,且对于在该工作文件中没有改动的部分(比如,历史源字符串)并不会对其进行上传。如上述图3所示,开发人员A通过目标终端所上传的开发数据包中可以包含这几行源代码A。
此外,由于上述图3所示的业务管理仓库具有数据共享的功能,所以,本申请实施例中的持续集成服务器从上述业务管理仓库中所拉取到的目标源字符串,可以为前述开发人员A所最新提交的几行源代码A。此外,在小程序的开发场景下,为了将这几行源代码A所对应的操作控件的功能添加到上一版本的小程序中,该持续集成服务器可以在启动小程序的持续集成服务时,从前述业务管理服务器上获取最新提交的这些目标源代码A,并可以进一步对这几行源代码A(即目标源代码)执行持续集成任务。其中,所述持续集成任务可以包含多个子任务;所述多个子任务具体可以包含:自动检测子任务,自动安装子任务、自动编译子任务以及自动上传子任务。
其中,自动检测子任务是指持续集成服务器可以在拉取目标源字符串的过程中,自动检测是否成功拉取到目标源字符串。比如,在可以通过将从业务管理仓库(即远程仓库)上拉取到的目标源字符串的哈希值与本地仓库中的哈希值进行比较,从而可以在确定两者不相同时,确定成功拉取到目标源字符串,可以将拉取到的目标源字符串嵌入历史源字符串的相应位置,得到该小程序对应的待编译数据包,进而可以继续执行自动安装子任务。但是,持续集成服务器还可以在代码拉取失败(比如,网络异常或者业务管理服务器宕机造成业务管理仓库异常)时,生成所述目标源字符串对应的异常拉取日志信息,并可以对异常拉取日志信息进行日志分析,以确定异常拉取因素,进而可以基于确定出的异常拉取因素生成该小程序对应的第一异常提醒信息。
其中,自动安装子任务是指持续集成服务器可以在得到待编译数据包时,根据该待编译数据包中的目标源字符串相关联的配置信息自动安装第三方依赖包,在成功安装该第三方依赖包时,得到用于对待编译数据包进行编译的依赖数据文件。此时,该持续集成服务器可以使用所述第三方依赖包所对应的依赖数据文件中的第三方提供的类库(即第三方类库,比如,公共类库和应用类库)对该待编译数据包进行代码编译,以便于后续可以自动执行自动编译子任务。
其中,自动编译子任务是指持续集成服务器可以在对待编译数据包进行代码编译的过程中,通过分包机制将待编译数据包划分为N个分包。比如,该持续集成服务器需要将小程序对应的待编译数据包划分成不同的子包,从而可以在构建小程序时得到不同的分包,这样,后续用户可以在使用该开发的小程序(比如,小程序的体验版)时按需进行加载,以提高该小程序的页面加载的效率。应当理解,本申请实施例可以将基于分包机制所得到的第一数据包和第二数据包统称为该小程序的测试数据包,其中,第一数据包可以为上述N个分包中的主包,该主包中可以包含用于加载小程序的主页面时的源代码。其中,N为正整数。
应当理解,在构建小程序的分包项目(简称为分包)时,可以得到一个或多个分包,这里将不对分包的数量进行限制。但是,基于该持续集成服务器中的分包机制所构建的N个分包中可以包含一个主包。应当理解,本申请实施例中的主包可以包含与小程序的主页面相关联的页面,比如,放置默认启动页面、工具栏(TabBar)页面,以及一些都需用到公共资源/JS脚本的分包等。可以理解的是,在小程序启动时,默认会下载主包并启动主包内页面,当用户进入分包内某个页面时,客户端会把对应分包下载下来,下载完成后再进行展示。
其中,所述分包机制是指该持续集成服务器需要确保整个小程序所有分包大小不超过第一阈值(例如,8M),且单个分包或者主包的大小不能超过第二阈值(例如,2M)。比如,页面A对应的分包1和页面B对应的分包2可以在同一个分包(比如,主包)中,若页面A对应的分包1的预下载总大小为0.5M,则根据分包机制可以确定分包B所对应的分包2的预下载总大小可以小于或者等于1.5M。应当理解,本申请实施例通过对小程序进行分包,可以有效地优化小程序首次启动的下载时间,并可以在多团队共同开发该小程序时,可以更好的进行解耦协作。
为便于理解,进一步的,请参见图4,是本申请实施例提供的一种执行持续集成任务的流程示意图。如图4所述,持续集成服务器可以在在启动持续集成任务时,通过图4所示的两种方式(即方式A和方式B)执行步骤10,以从与该持续集成服务器具有网络连接关系的业务管理服务器(即上述git服务器)所对应的git仓库上获取开发人员最新提交的目标源字符串。
具体的,比如,对于图4所示的方式A而言,持续集成服务器可以在启动持续集成服务器时,执行定时拉取任务,以触发定时器,从而可以通过定时器实现定时拉取功能,换言之,持续集成服务器可以通过该定时器判断当前时间是否达到定时拉取时长(例如,4小时),若当前时间达到定时拉取时长,则可以拉取git仓库上最新提交的源代码,即可以从业务管理仓库上拉取最新的目标源字符串。
可选的,又比如,对于图4所示的方式B而言,持续集成服务器可以在启动持续集成服务器时,执行按需拉取任务,此时,git服务器也可以在获取到开发终端所上传的最新的目标源字符串(即最新的目标源代码)时,生成业务提交通知信息,从而可以主动通知持续集成服务器来拉取最新的目标源代码。换言之,本申请实施例中的git服务器可以在检测到开发者上传的最新的目标源代码时,触发生成代码提交通知(本申请实施例可以将该代码提交通知称之为上述业务提交通知信息),并将该代码提交通知发送给持续集成服务器,以使该持续集成服务器可以从前述git仓库中拉取开发人员最新上传的目标源代码。
如图4所示,持续集成服务器可以在执行完步骤10之后,进一步执行步骤20,以执行上述自动检测子任务,以判断是否成功拉取到最新的目标源字符串,若确定拉取到最新的目标源字符串,则可以确定该目标字符串不满足异常拉取条件,进而可以执行步骤30;反之,则确定目标源字符串满足异常拉取条件,比如,在该定时拉取时长内,开发人员并未上传开发的目标源字符串,从而导致在当前时间达到定时拉取时长时,持续集成服务器无法从git仓库上未获取到最新的目标源字符串,比如,从git仓库上获取到的仍然是上一版本对应的目标源字符串时,可以确定拉取到的目标源字符串满足异常拉取条件。可选的,在持续集成服务器与git服务器之间的网络存在异常,或者git服务器存在宕机等现象时,持续集成服务器也无法从git仓库上未获取到最新的目标源字符串,从而可以确定拉取到的目标源字符串满足异常拉取条件。
换言之,持续集成服务器在拉取到代码时,可以对拉取到的代码进行检测,以检测拉取到的代码是否有问题(即是否满足上述异常拉取条件)。又比如,若存在代码拉取失败,比如:网络异常或者git仓库异常等异常拉取因素,也会造成代码拉取失败,则可以跳转执行图4所示的步骤90,即可以在检测到目标源字符串满足异常拉取条件时,生成错误日志(例如,异常拉取日志信息),从而可以在该持续集成服务器中根据该错误日志分析错误原因(即可以得到至少一个异常拉取因素),从而可以根据分析得到的错误原因生成错误提醒信息(比如,第一异常提醒信息)。如图4所示,该持续集成服务器在执行步骤100时,可以判断前述错误原因是否与代码提交相关,若确定与代码提交不相关,则可以跳转执行步骤120,以将错误信息作为异常提醒信息发布到企业微信群;比如,在目标源字符串拉取的过程中,若确定异常拉取因素包含网络异常和git服务器宕机中的任意一个时,可以确定当前的错误原因属于环境异常因素,即不属于与代码提交相关的代码异常因素。
如图4所示,持续集成服务器可以在执行完步骤20之后,通过步骤30-步骤40执行自动安装子任务。可以理解的是,持续集成服务器可以在通过上述步骤20得到待编码数据包之后,可以根据该待编码数据包中的配置信息安装第三方依赖包,以便于后续可以在编译该待编码数据包时,可以通过该第三方依赖包所提供的第三方类库运行该目标源字符串。如图4所述,持续集成服务器可以在完成第三方依赖包(也可以称之为依赖数据包或者第三方安装包)的安装时,进而可以执行步骤50。
其中,可以理解的是,在安装上述第三方依赖包的过程中,还会通过步骤40判断是否安装成功,若安装失败(比如,因为网络异常而导致无法获取第三方依赖包,或者第三方依赖包异常时,会导致安装失败),则该持续集成服务器可以跳转执行步骤90。此时,由于该网络异常或者第三方依赖包异常属于上述环境异常因素,所以该持续集成服务器可以在执行完步骤100后,继续执行步骤120。
为便于理解,进一步的,请参见图5,是本申请实施例提供的一种生成安装异常日志信息的场景示意图。如图5所述的持续集成服务器可以在执行完上述步骤40时,判断是否完成对第三方依赖包的安装,若判断为否,则可以在所述依赖数据包(即第三方依赖包)的安装状态为失败状态时,生成图5所示的安装异常日志信息;进而可以对该安装异常日志信息进行错误分析,以确定相应的安装异常因素,并可以基于与安装异常日志信息相关联的安装异常因素生成安装错误提示信息。如图5所示,持续集成服务器可以在确定该安装异常日志信息相关联的安装异常因素属于环境异常因素(即在执行上述步骤100时,确定错误根代码提交不相关)时,执行上述步骤120,以在图5所示的目标终端(即开发终端)中显示该小程序对应的第一类异常提醒信息,此时,该第一类异常提醒信息可以为前述基于安装异常因素所生成的安装错误提醒信息。
可选的,若该持续集成服务器检测到与本次所提交的目标源字符串相关联的依赖数据文件中所声明的第三方依赖包的版本不存在或者第三方依赖包的名字错误等,也将无法安装第三方依赖包,从而也会导致第三方依赖包的安装失败,进而可以使该持续集成服务器跳转执行步骤90。此时,由于开发人员(例如,上述开发人员A)在依赖数据文件中所声明的第三方依赖包的版本不存在或者名字错误等安装异常因素属于代码异常因素。所以该持续集成服务器可以在执行完步骤100后,继续执行步骤110,以获取所述目标源字符串对应的代码提交记录以及与所述代码提交记录相关联的开发人员信息,从而可以将所述代码提交记录以及所述开发人员信息补充至所述安装错误提示信息,并可以将补充后的安装错误提示信息作为所述小程序对应的第二类异常提醒信息。换言之,如上述图4所示,持续集成服务器可以在执行完步骤110之后,继续步骤120,以将该开发人员A最近所提交的代码提交记录和该开发人员A的开发人员信息(例如,该开发人员A在该小程序开发过程中所属的项目的群组、以及该开发人员在上述第二应用中的账号信息等信息)补充到安装错误提示信息中,以将补充后的安装错误提示信息作为该小程序对应的第二类异常提醒信息,推送给第二应用(例如,企业微信)对应的第二业务服务器(即企业微信服务器),以使第二业务服务器可以将该第二类异常提醒信息通知到该开发人员A所在的开发群组(比如,上述图5所对应实施例中的群组K),即可以将该补充后的安装错误提示信息下发给与该小程序相关联的群组K,从而可以实现在企业微信中进行告警处理。
如上述图5所示,持续集成服务器可以在执行完上述步骤40之后,进一步通过步骤50执行自动编译子任务,可以理解的是,持续集成服务器在进行自动编译的过程中,可以通过分包机制将待编译数据包进行分包处理,具体实现中,该持续集成服务器可以通过一个用于进行分包的配置文件,自动使持续集成服务器可以根据小程序的页面的维度来进行自动分包,比如,可以得到上述N个分包,从而可以基于上述N个分包快速得到该小程序对应的测试数据包。
如上述图4所示,持续集成服务器可以在执行完步骤50之后,继续步骤60,以通过该持续集成服务器判断本次编译是否成功,如果成功,则可以跳转执行步骤70,该步骤70可以为下述步骤S103;否则,则可以跳转至步骤90。其中,需要立即的是,在对编译数据包进行编译的过程中所确定的编译错误因素可以包括静态语法错误,比如,是因为开发人员所上传的目标源代码有问题而导致的编译失败,此时,该持续集成服务器可以根据所述静态语法错误生成所述小程序对应的第二异常提醒信息,从而可以通过上述步骤100、步骤110和步骤120实现异常告警。换言之,本申请实施例进行异常告警的方式与根据上述代码异常因素所生成的第二类异常提醒信息的告警方式相同,这里将不再继续进行赘述。
步骤S103,将所述测试数据包发送至与所述第一应用对应的第一业务服务器,以使所述第一业务服务器将所述测试数据包分发给目标测试用户。
具体的,持续集成服务器可以在所述小程序对应的持续集成平台上,获取所述持续集成平台提供的目标接口;所述目标接口包含与所述小程序相关联的IDE接口;进一步的,持续集成服务器可以调用所述IDE接口将所述测试数据包模拟上传至与所述第一应用对应的第一业务服务器。其中,在所述第一应用为上述即时通讯应用中的微信应用时,所述第一业务服务器可以为该微信应用对应的后台服务器。
其中,可以理解的是,本申请实施例可以在执行完上述步骤S102之后,进一步执行步骤S103,以在该持续集成服务器中实现测试数据包的自动上传,从而可以在无按钮(比如,无编译按钮和上传按钮)的情况下,在该持续集成服务器中进行测试数据包的自动上传。
如上述图4所示,持续集成服务器的步骤103可以通过步骤70执行自动上传子任务,即持续集成服务器可以调用持续集成平台中的开发者工具所提供的目标接口(即IDE接口),自动将编译成功后的测试包上传给上述微信服务器(即上述第一业务服务器)。可以理解的是,如上述图4所示,持续集成服务器还可以在执行完步骤70之后,进一步执行步骤80,以判断在预设的响应时长内是否能够接收到微信服务器所返回的响应文本信息,若接收到该响应文本信息,则确定完成对所述测试数据包的上传,此时,可以在该持续集成服务器中结束针对对本次目标源字符串的单次集成。
可选的,如上述图4所示,持续集成服务器还可以在未获取到微信服务器返回的响应文本信息时,生成异常上传日志信息,并可以根据所述异常上传日志信息中的异常上传因素生成所述小程序对应的第三异常提醒信息。其中,所述异常上传因素具体可以包含包括:1)网络异常;2)微信服务器异常;3)编译出来的代码不符合小程序规范(如体积太大,超过2M;缺少必要文件等)。其中,异常上传因素1和异常上传因素2属于环境异常因素,此时,该持续集成服务器生成的第三异常提醒信息的具体过程可以参见上述图5所对应实施例中对第一类异常提醒信息的描述,这里将不再继续进行赘述。此外,由于异常上传因素3属于代码异常因素,所以,此时,该持续集成服务器生成的第三异常提醒信息的具体过程可以参见上述对第二类异常提醒信息的描述,这里将不再继续进行赘述。
应当理解,当第一应用服务器接收到该小程序的测试数据包之后,可以将该测试数据包作为体验数据包,从而可以生成该体验数据包对应的二维码,从而可以基于上述小程序开发过程中所绑定的第一应用中的目标测试用户的账号信息,将所述二维码推送给这些账号信息对应的目标测试用户,以使这些目标测试用户可以通过该二维码体验最新开发的小程序所提供的业务服务。应当理解,在小程序开发过程中,这些目标测试用户所获取到的小程序为携带目标标识(例如,携带体验标识)的小程序。
其中,可以理解的是,本申请实施例中的小程序可以是在上述微信应用(即第一应用)的微信框架下所开发的,因此,该持续集成服务器所最终生成的测试数据包可以上传到上述微信服务器(即上述第一业务服务器),以便于使用该微信应用的目标测试用户可以体验到新开发的携带体验标识的小程序的所提供的业务服务。比如,以开发的小程序为视频应用类小程序为例,开发人员可以在先前开发的视频应用类小程序中增加一个视频播放插件为例,这样,开发人员所指定的目标测试用户在第一应用(即微信应用)中使用该视频应用类小程序时,则可以体验到该新增的视频播放插件所提供的服务功能。
本申请实施例可以获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述目标源字符串是由目标终端针对与第一应用相关联的小程序对应的历史源字符串进行变更后所确定的;根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包;将所述测试数据包发送至与所述第一应用对应的第一业务服务器,以使所述第一业务服务器将所述测试数据包分发给目标测试用户。由此可见,本申请可以通过引入的持续集成服务器,可以将从业务管理仓库上所获取到的目标源字符串(比如,最新上传的源代码)嵌入到历史源字符串中,该历史源字符串可以为该持续集成服务器中已有的源代码(比如,上一次上传的源代码),通过该持续集成服务器可以提供持续集成服务,以自动生成测试数据包,从而可以避免人机交互,进而可以在无按钮的情况下提高测试数据包的生成效率。此外,通过在持续集成服务器中自动生成测试数据包,还可以避免目标终端(即开发终端)与第一业务服务器(比如,微信服务器)之间直接进行数据交互,从而可以在小程序的开发过程中,充分发挥解耦协作,以避免开发资源的浪费。
进一步地,请参见图6,是本申请实施例提供的另一种数据处理方法的流程示意图。如图6所示,所述方法至少可以包括:
步骤S201,在当前时长达到定时拉取时长时,获取针对目标源字符串的源码拉取指令;
步骤S202,根据所述源码拉取指令从所述业务管理仓库中拉取所述目标源字符串以及所述目标字符串对应的增量变更属性信息;
可以理解的是,本申请实施例中的步骤S102和步骤S103用户描述持续集成服务器可以通过定时拉取方式从业务管理仓库上获取开发终端所最新上传的目标源字符串。应当理解,持续集成服务器在拿到开发终端上传的目标源字符串之后,可以进一步跳转执行步骤S203,以通过该执行集成服务器所提供的持续集成服务执行持续集成任务。其中,所述持续集成任务可以包含上述自动检测子任务,上述自动安装子任务以及上述自动编译子任务、上述自动上传子任务等。
步骤S203,根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的待编译数据包;
具体的,持续集成服务器可以对所述目标源字符串进行异常检测;进一步的,持续集成服务器可以在检测到所述目标源字符串不满足异常拉取条件时,根据所述增量变更属性信息,确定所述目标源字符串在所述历史源字符串中的位置信息;进一步的,持续集成服务器可以基于所述位置信息将所述目标源字符串嵌入所述历史源字符串,将嵌入有所述目标源字符串的历史源字符串作为所述小程序对应的待编译数据包。
步骤S204,根据所述小程序对应的依赖数据文件,对所述待便于数据包进行编译处理,在所述待编译数据包的编译状态为成功状态时,得到所述小程序对应的测试数据包。
具体的,持续集成服务器可以获取所述待编译数据包相关联的依赖数据包,在所述依赖数据包的安装状态为成功状态时,得到用于对所述待编译数据包进行编译的依赖数据文件;进一步的,持续集成服务器可以根据所述依赖数据文件中所提供的第三方类库,对所述待编译数据包进行代码编译,并获取所述小程序对应的分包机制;进一步的,持续集成服务器可以基于所述分包机制将所述待编译数据包划分为N个分包;N为正整数;所述N个分包中包含与所述小程序的主页面相关联的第一数据包,以及与所述小程序的子页面相关联的第二数据包;进一步的,持续集成服务器可以在所述待编译数据包的编译状态为成功状态时,基于所述第一数据包和所述第二数据包,得到所述小程序对应的测试数据包。
步骤S205,将所述测试数据包发送至与所述第一应用对应的第一业务服务器。
具体的,持续集成服务器可以在所述小程序对应的持续集成平台上,获取所述持续集成平台提供的目标接口;所述目标接口包含与所述小程序相关联的IDE接口;进一步的,持续集成服务器可以调用所述IDE接口将所述测试数据包模拟上传至与所述第一应用对应的第一业务服务器。
步骤S206,若在响应时长内获取到所述第一业务服务器针对所述测试数据包返回的响应文本信息,则确定完成对所述测试数据包的上传;
为便于理解,进一步的,请参见图7,是本申请实施例提供的一种上传测试数据包的场景示意图。如图7所示,持续集成服务器可以在成功编译上述待测试数据包时,得到图7所示的测试数据包,该测试数据包是基于上述分包机制对待编译数据包进行划分后所确定的。如图7所示,第一业务服务器(例如,微信服务器)可以在获取到该持续集成服务器所上传的测试数据包时,生成针对该测试数据包的响应文本信息,使得持续集成服务器可以基于该响应文本信息结束针对该目标源字符串的单次集成。此外,如图7所示的第一业务服务器(即微信服务器)可以进一步将该测试数据包作为体验数据包,进而可以针对该体验数据包生成体验邀请通知,并通过图7所示的第一应用对应的公众号(或者订阅号等)使得与该小程序相关联的目标测试用户可以获取到该体验邀请通知。
为便于理解,本申请实施例可以将目标测试用户所对应的终端称之为图7所示的测试用户终端,可以理解的是,本申请实施例中的测试用户终端可以为上述图1所对应实施例中的第一用户终端集群中的任意一个用户终端(例如,上述图1所示的用户终端3000a)。如图7所示,测试用户终端所对应的目标测试用户(例如,测试用户K),可以在获取到该体验邀请通知时,针对该体验邀请通知执行触发操作,以在图7所示的包含该第一应用对应的公众号(例如,图7所示的AAAA)所在的会话界面中显示该小程序对应的身份标识图像。可以理解的是,本申请实施例以该身份标识图像为二维码为例,使得该测试用户K可以在该会话界面中通过长按该二维码所在的区域获取上述体验数据包,从而可以在第一应用中启动该小程序的体验版,以通过上述体验数据包访问该小程序所对应的应用显示界面,从而可以在相应的应用显示界面中体验上述针对小程序所新增的业务功能。
可选的,步骤S207,若在所述响应时长内未获取到所述第一业务服务器返回的响应文本信息,则生成异常上传日志信息,根据所述异常上传日志信息中的异常上传因素生成所述小程序对应的第三异常提醒信息,将所述第三异常提醒信息通过与所述小程序相关联的第二业务服务器,发送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组。
为便于理解,进一步的,请参见图8,是本申请实施例提供的一种根据多个开发终端进行协同开发的场景示意图。如图8所示的开发终端10a、...、开发中国的10n中的每个开发终端均可以向图8所示的业务仓库提交相应的源代码。比如,图8所示的开发人员1可以针对小程序的插件A进行开发,开发人员n可以针对小程序的插件B进行开发。所以,如图7所示,开发人员1所对应的开发终端10a可以将针对插件A的源代码1上传到业务管理服务器对应的业务管理仓库20中,同理,开发人员2所对应的开发终端10n可以将针对插件B的源代码n上传到业务管理服务器对应的业务管理仓库20中。此时,在当前时间达到定时拉取时长时,图8所示的持续集成服务器30可以对这两个开发终端所上传的源代码(此时,这里的源代码为上述目标源代码)执行上述持续集成服务。
可选的,如图8所示,该业务管理服务器还可以在检测到图8所示的业务管理仓库中有新的目标源字符串时,可以生成针对这两个目标源代码的业务提交通知信息(即图8所示的提交通知),进而可以在图8所示的持续集成服务器30获取到图8所示的提交通知时,从图8所示的业务管理仓库上拉取到两个目标源字符串,从而可以在该持续集成服务器30中对这两个目标源字符串执行持续集成任务(比如,可以针对两个不同插件先后执行持续集成任务,也可以针对这两个插件同步执行持续集成任务,这里将不对其进行限定)。应当理解,本申请实施例中针对两个目标源字符串执行持续集成任务的具体实现方式可以参见上述4所对应实施例中对持续集成任务的描述。所以,如图8所示,持续集成服务器可以在编译成功时,将生成的测试数据包上传给图8所示的第一业务服务器40b(例如,上述微信应用)。反之,可以在编译失败时,将图8所示的错误提示信息给到第二业务服务器(例如,企业微信服务器),以便于能够通过该企业微信服务器实现在企业微信(即上述第二应用)中进行异常告警。
本申请实施例可以获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述目标源字符串是由目标终端针对与第一应用相关联的小程序对应的历史源字符串进行变更后所确定的;根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包;将所述测试数据包发送至与所述第一应用对应的第一业务服务器,以使所述第一业务服务器将所述测试数据包分发给目标测试用户。由此可见,本申请可以通过引入的持续集成服务器,可以将从业务管理仓库上所获取到的目标源字符串(比如,最新上传的源代码)嵌入到历史源字符串中,该历史源字符串可以为该持续集成服务器中已有的源代码(比如,上一次上传的源代码),通过该持续集成服务器可以提供持续集成服务,以自动生成测试数据包,从而可以避免人机交互,进而可以在无按钮的情况下提高测试数据包的生成效率。此外,通过在持续集成服务器中自动生成测试数据包,还可以避免目标终端(即开发终端)与第一业务服务器(比如,微信服务器)之间直接进行数据交互,从而可以在小程序的开发过程中,充分发挥解耦协作,以避免开发资源的浪费。
进一步地,请参见图9,是本申请实施例提供的一种数据处理装置的结构示意图。如图9所示,所述数据处理装置1可以应用于上述图1所对应实施例中的持续集成服务器2000。所述数据处理装置1可以包含:字符串获取模块10,字符串嵌入模块20,数据包发送模块30;进一步地,该数据处理装置1还可以响应获取模块40和异常上传模块50;
字符串获取模块10,用于获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述目标源字符串是由目标终端针对与第一应用相关联的小程序对应的历史源字符串进行变更后所确定的;
其中,所述字符串获取模块10包括:通知获取单元101,第一获取单元102;可选的,指令获取单元103,第二获取单元104;
通知获取单元101,用于获取所述业务管理仓库对应的业务管理服务器针对目标源字符串发送的业务提交通知信息;所述业务提交通知信息中包含与所述目标源字符串对应的版本信息的哈希值;
第一获取单元102,用于根据所述哈希值从所述业务管理仓库中拉取所述目标源字符串以及所述目标字符串对应的增量变更属性信息。
可选的,指令获取单元103,用于在当前时长达到定时拉取时长时,获取针对目标源字符串的源码拉取指令;
第二获取单元104,用于根据所述源码拉取指令从所述业务管理仓库中拉取所述目标源字符串以及所述目标字符串对应的增量变更属性信息。
其中,可以理解的是,数据处理装置1在拉取目标源字符串的过程中,可以通过所述通知获取单元101,第一获取单元102从所述业务管理仓库上按需拉取所述目标源服务器,此时,将不使用所述指令获取单元103,第二获取单元104进行定时拉取;可选的,数据处理装置1在通过所述指令获取单元103,第二获取单元104从所述业务管理仓库上定时拉取所述目标源服务器时,将不使用所述通知获取单元101,第一获取单元102进行按需拉取。
其中,所述业务管理仓库为业务管理服务器中用于进行数据共享的代码数据库;所述代码数据库包含与所述小程序相关联的至少一个终端上传的业务代码数据;所述业务代码数据包含所述至少一个终端中的目标终端所上传的所述目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述业务管理服务器用于对所述目标终端所上传的目标源字符串进行分布式存储,且用于对所述目标源字符串的版本信息进行版本管理。
字符串嵌入模块20,用于根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包;
其中,所述字符串嵌入模块20包括:字符嵌入单元201,编译处理单元202;
字符嵌入单元201,用于根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的待编译数据包;
其中,所述字符嵌入单元201包括:异常检测子单元2011,位置确定子单元2012,字符嵌入子单元2013,可选的,所述字符嵌入单元201还包含第一日志生成子单元2014,第一异常提醒子单元2015,第一提醒推送子单元2016;
异常检测子单2011,用于对所述目标源字符串进行异常检测;
位置确定子单元2012,用于在检测到所述目标源字符串不满足异常拉取条件时,根据所述增量变更属性信息,确定所述目标源字符串在所述历史源字符串中的位置信息;
字符嵌入子单元2013,用于基于所述位置信息将所述目标源字符串嵌入所述历史源字符串,将嵌入有所述目标源字符串的历史源字符串作为所述小程序对应的待编译数据包。
可选的,第一日志生成子单元2014,用于在检测到所述目标源字符串满足所述异常拉取条件时,生成所述目标源字符串对应的异常拉取日志信息;
第一异常提醒子单元2015,用于根据所述异常拉取日志信息中的至少一个异常拉取因素,生成所述小程序对应的第一异常提醒信息;
第一提醒推送子单元2016,用于将所述第一异常提醒信息通过与所述小程序相关联的第二业务服务器,推送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组;所述群组包含至少一个参与开发所述小程序的开发用户。
其中,所述异常检测子单元2011,位置确定子单元2012,字符嵌入子单元2013,可选的,所述字符嵌入单元201还包含第一日志生成子单元2014,第一异常提醒子单元2015,第一提醒推送子单元2016的具体实现方式可以参见上述图2所对应实施例中对拉取到的目标源字符串的描述,这里将不再继续进行赘述。
编译处理单元202,用于根据所述小程序对应的依赖数据文件,对所述待便于数据包进行编译处理,在所述待编译数据包的编译状态为成功状态时,得到所述小程序对应的测试数据包。
其中,所述编译处理单元202包括:依赖获取子单元2021,编译子单元2022,分包子单元2023,测试包生成子单元2024;可选的,所述编译处理单元202还可以包括:第二日志生成子单元2025,安装错误子单元2026,字符无关子单元2027,字符相关子单元2028;编译错误子单元2029,第二异常提醒子单元2030,第二提醒推送子单元2031;
依赖获取子单2021,用于获取所述待编译数据包相关联的依赖数据包,在所述依赖数据包的安装状态为成功状态时,得到用于对所述待编译数据包进行编译的依赖数据文件;
编译子单元2022,用于根据所述依赖数据文件中所提供的第三方类库,对所述待编译数据包进行代码编译,并获取所述小程序对应的分包机制;
分包子单元2023,用于基于所述分包机制将所述待编译数据包划分为N个分包;N为正整数;所述N个分包中包含与所述小程序的主页面相关联的第一数据包,以及与所述小程序的子页面相关联的第二数据包;
测试包生成子单元2024,用于在所述待编译数据包的编译状态为成功状态时,基于所述第一数据包和所述第二数据包,得到所述小程序对应的测试数据包。
可选的,第二日志生成子单元2025,用于在所述依赖数据包的安装状态为失败状态时,生成安装异常日志信息;
安装错误子单元2026,用于基于所述安装异常日志信息相关联的安装异常因素生成安装错误提示信息;
字符无关子单元2027,用于若所述安装异常因素属于与所述目标源字符串无关的环境异常因素,则将所述安装错误提示信息作为所述小程序对应的第一类异常提醒信息;
字符相关子单元2028,用于若所述安装异常因素属于与所述目标源字符串相关的代码异常因素,则获取所述目标源字符串对应的代码提交记录以及与所述代码提交记录相关联的开发人员信息,将所述代码提交记录以及所述开发人员信息补充至所述安装错误提示信息,并将补充后的安装错误提示信息作为所述小程序对应的第二类异常提醒信息。
可选的,编译错误子单元2029,用于在所述待编译数据包的编译状态为失败状态时,生成所述待编译数据包对应的编译错误日志信息,对所述编译错误日志信息进行错误分析,得到所述待编译数据包对应的编译错误因素;所述编译错误因素包含所述待编译数据包中的目标源字符串对应的静态语法错误;
第二异常提醒子单元2030,用于基于所述静态语法错误生成所述小程序对应的第二异常提醒信息;
第二提醒推送子单元2031,用于将所述第二异常提醒信息通过与所述小程序相关联的第二业务服务器,发送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组。
其中,依赖获取子单元2021,编译子单元2022,分包子单元2023,测试包生成子单元2024,第二日志生成子单元2025,安装错误子单元2026,字符无关子单元2027,字符相关子单元2028;编译错误子单元2029,第二异常提醒子单元2030,第二提醒推送子单元2031的具体实现方式可以参见上述图2所对应实施例中对生成测试数据包的描述,这里将不再继续进行赘述。
其中,所述字符嵌入单元201,编译处理单元202的具体实现方式可以参见上述图2所对应实施例中对步骤S102的描述,这里将不再继续进行赘述。
数据包发送模块30,用于将所述测试数据包发送至与所述第一应用对应的第一业务服务器,以使所述第一业务服务器将所述测试数据包分发给目标测试用户。
其中,所述数据包发送模块30包括:接口获取单元301,数据包上传单元302;
接口获取单元301,用于在所述小程序对应的持续集成平台上,获取所述持续集成平台提供的目标接口;所述目标接口包含与所述小程序相关联的IDE接口;
数据包上传单元302,用于调用所述IDE接口将所述测试数据包模拟上传至与所述第一应用对应的第一业务服务器。
其中,所述接口获取单元301,数据包上传单元302的具体实现方式可以参见上述图2所对应实施例中对步骤S103的描述,这里将不再继续进行赘述。
其中,字符串获取模块10,字符串嵌入模块20,数据包发送模块30的具体实现方式可以参见上述图2所对应实施例中对步骤S101-步骤S103的描述,这里将不再继续进行赘述。
响应获取模块40,用于若在响应时长内获取到所述第一业务服务器针对所述测试数据包返回的响应文本信息,则确定完成对所述测试数据包的上传;
异常上传模块50,用于若在所述响应时长内未获取到所述第一业务服务器返回的响应文本信息,则生成异常上传日志信息,根据所述异常上传日志信息中的异常上传因素生成所述小程序对应的第三异常提醒信息,将所述第三异常提醒信息通过与所述小程序相关联的第二业务服务器,发送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组。
其中,响应获取模块40和异常上传模块50的具体实现方式可以参见上述图6所对应实施例中对步骤S206-步骤S207的描述,这里将不再继续进行赘述。
由此可见,本申请可以通过引入的持续集成服务器,可以将从业务管理仓库上所获取到的目标源字符串(比如,最新上传的源代码)嵌入到历史源字符串中,该历史源字符串可以为该持续集成服务器中已有的源代码(比如,上一次上传的源代码),通过该持续集成服务器可以提供持续集成服务,以自动生成测试数据包,从而可以避免人机交互,进而可以在无按钮的情况下提高测试数据包的生成效率。此外,通过在持续集成服务器中自动生成测试数据包,还可以避免目标终端(即开发终端)与第一业务服务器(比如,微信服务器)之间直接进行数据交互,从而可以在小程序的开发过程中,充分发挥解耦协作,以避免开发资源的浪费。
进一步地,请参见图10,是本申请实施例提供的一种计算机设备的示意图。如图10所示,所述计算机设备1000可以为上述图1对应实施例中的持续集成服务器2000,所述计算机设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),网络接口1004可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选地还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机存储介质的存储器1005中可以包括操作***、网络通信模块、用户接口模块以及设备控制应用程序。
在图10所示的计算机设备1000中,网络接口1004主要用于与业务服务器进行网络通信;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述目标源字符串是由目标终端针对与第一应用相关联的小程序对应的历史源字符串进行变更后所确定的;
根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包;
将所述测试数据包发送至与所述第一应用对应的第一业务服务器,以使所述第一业务服务器将所述测试数据包分发给目标测试用户。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图2和图6所对应实施例中对所述数据处理方法的描述,也可执行前文图9所对应实施例中对所述数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且所述计算机可读存储介质中存储有前文提及的数据处理装置1所执行的计算机程序,且所述计算机程序包括程序指令,当所述处理器执行所述程序指令时,能够执行前文图2或者图6所对应实施例中对所述数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (15)

1.一种数据处理方法,所述方法应用于持续集成服务器,其特征在于,包括:
获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述目标源字符串是由目标终端针对与第一应用相关联的小程序对应的历史源字符串进行变更后所确定的;
根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包;
将所述测试数据包发送至与所述第一应用对应的第一业务服务器,以使所述第一业务服务器将所述测试数据包分发给目标测试用户。
2.根据权利要求1所述的方法,其特征在于,所述获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息,包括:
获取所述业务管理仓库对应的业务管理服务器针对目标源字符串发送的业务提交通知信息;所述业务提交通知信息中包含与所述目标源字符串对应的版本信息的哈希值;
根据所述哈希值从所述业务管理仓库中拉取所述目标源字符串以及所述目标字符串对应的增量变更属性信息。
3.根据权利要求1所述的方法,其特征在于,所述获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息,包括:
在当前时长达到定时拉取时长时,获取针对目标源字符串的源码拉取指令;
根据所述源码拉取指令从所述业务管理仓库中拉取所述目标源字符串以及所述目标字符串对应的增量变更属性信息。
4.根据权利要求1-3任意一项所述的方法,其特征在于,所述业务管理仓库为业务管理服务器中用于进行数据共享的代码数据库;所述代码数据库包含与所述小程序相关联的至少一个终端上传的业务代码数据;所述业务代码数据包含所述至少一个终端中的目标终端所上传的所述目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述业务管理服务器用于对所述目标终端所上传的目标源字符串进行分布式存储,且用于对所述目标源字符串的版本信息进行版本管理。
5.根据权利要求1所述的方法,其特征在于,所述根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包,包括:
根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的待编译数据包;
根据所述小程序对应的依赖数据文件,对所述待便于数据包进行编译处理,在所述待编译数据包的编译状态为成功状态时,得到所述小程序对应的测试数据包。
6.根据权利要求5所述的方法,其特征在于,所述根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的待编译数据包,包括:
对所述目标源字符串进行异常检测;
在检测到所述目标源字符串不满足异常拉取条件时,根据所述增量变更属性信息,确定所述目标源字符串在所述历史源字符串中的位置信息;
基于所述位置信息将所述目标源字符串嵌入所述历史源字符串,将嵌入有所述目标源字符串的历史源字符串作为所述小程序对应的待编译数据包。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
在检测到所述目标源字符串满足所述异常拉取条件时,生成所述目标源字符串对应的异常拉取日志信息;
根据所述异常拉取日志信息中的至少一个异常拉取因素,生成所述小程序对应的第一异常提醒信息;
将所述第一异常提醒信息通过与所述小程序相关联的第二业务服务器,推送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组;所述群组包含至少一个参与开发所述小程序的开发用户。
8.根据权利要求5所述的方法,其特征在于,所述根据所述小程序对应的依赖数据文件,对所述待编译数据包进行编译处理,在所述待编译数据包的编译状态为成功状态时,得到所述小程序对应的测试数据包,包括:
获取所述待编译数据包相关联的依赖数据包,在所述依赖数据包的安装状态为成功状态时,得到用于对所述待编译数据包进行编译的依赖数据文件;
根据所述依赖数据文件中所提供的第三方类库,对所述待编译数据包进行代码编译,并获取所述小程序对应的分包机制;
基于所述分包机制将所述待编译数据包划分为N个分包;N为正整数;所述N个分包中包含与所述小程序的主页面相关联的第一数据包,以及与所述小程序的子页面相关联的第二数据包;
在所述待编译数据包的编译状态为成功状态时,基于所述第一数据包和所述第二数据包,得到所述小程序对应的测试数据包。
9.根据权利要求8所述的方法,其特征在于,还包括:
在所述依赖数据包的安装状态为失败状态时,生成安装异常日志信息;
基于所述安装异常日志信息相关联的安装异常因素生成安装错误提示信息;
若所述安装异常因素属于与所述目标源字符串无关的环境异常因素,则将所述安装错误提示信息作为所述小程序对应的第一类异常提醒信息;
若所述安装异常因素属于与所述目标源字符串相关的代码异常因素,则获取所述目标源字符串对应的代码提交记录以及与所述代码提交记录相关联的开发人员信息,将所述代码提交记录以及所述开发人员信息补充至所述安装错误提示信息,并将补充后的安装错误提示信息作为所述小程序对应的第二类异常提醒信息。
10.根据权利要求8所述的方法,其特征在于,还包括:
在所述待编译数据包的编译状态为失败状态时,生成所述待编译数据包对应的编译错误日志信息,对所述编译错误日志信息进行错误分析,得到所述待编译数据包对应的编译错误因素;所述编译错误因素包含所述待编译数据包中的目标源字符串对应的静态语法错误;
基于所述静态语法错误生成所述小程序对应的第二异常提醒信息;
将所述第二异常提醒信息通过与所述小程序相关联的第二业务服务器,发送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组。
11.根据权利要求1所述的方法,其特征在于,所述将所述测试数据包发送至与所述第一应用对应的第一业务服务器,包括:
在所述小程序对应的持续集成平台上,获取所述持续集成平台提供的目标接口;所述目标接口包含与所述小程序相关联的IDE接口;
调用所述IDE接口将所述测试数据包模拟上传至与所述第一应用对应的第一业务服务器。
12.根据权利要求1所述的方法,其特征在于,还包括:
若在响应时长内获取到所述第一业务服务器针对所述测试数据包返回的响应文本信息,则确定完成对所述测试数据包的上传;
若在所述响应时长内未获取到所述第一业务服务器返回的响应文本信息,则生成异常上传日志信息,根据所述异常上传日志信息中的异常上传因素生成所述小程序对应的第三异常提醒信息,将所述第三异常提醒信息通过与所述小程序相关联的第二业务服务器,发送至与所述小程序相关联的群组;所述群组为不同于所述第一应用的第二应用中的群组。
13.一种数据处理装置,所述装置应用于持续集成服务器,其特征在于,包括:
字符串获取模块,用于获取与业务管理仓库相关联的目标源字符串以及所述目标源字符串对应的增量变更属性信息;所述目标源字符串是由目标终端针对与第一应用相关联的小程序对应的历史源字符串进行变更后所确定的;
字符串嵌入模块,用于根据所述增量变更属性信息将所述目标源字符串嵌入所述历史源字符串,根据嵌入有所述目标源字符串的历史源字符串,生成所述小程序对应的测试数据包;
数据包发送模块,用于将所述测试数据包发送至与所述第一应用对应的第一业务服务器,以使所述第一业务服务器将所述测试数据包分发给目标测试用户。
14.一种计算机设备,其特征在于,包括:处理器、存储器以及网络接口;
所述处理器与存储器、网络接口相连,其中,网络接口用于提供数据通信功能,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,以执行如权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1-12任一项所述的方法。
CN201911038478.2A 2019-10-29 2019-10-29 一种数据处理方法和相关装置 Active CN112732265B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911038478.2A CN112732265B (zh) 2019-10-29 2019-10-29 一种数据处理方法和相关装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911038478.2A CN112732265B (zh) 2019-10-29 2019-10-29 一种数据处理方法和相关装置

Publications (2)

Publication Number Publication Date
CN112732265A true CN112732265A (zh) 2021-04-30
CN112732265B CN112732265B (zh) 2024-03-19

Family

ID=75588953

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911038478.2A Active CN112732265B (zh) 2019-10-29 2019-10-29 一种数据处理方法和相关装置

Country Status (1)

Country Link
CN (1) CN112732265B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113591440A (zh) * 2021-07-29 2021-11-02 百度在线网络技术(北京)有限公司 一种文本处理方法、装置及电子设备
CN114385759A (zh) * 2022-01-13 2022-04-22 平安科技(深圳)有限公司 配置文件的同步方法、装置、计算机设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1180665A2 (de) * 2000-08-11 2002-02-20 Takata-Petri AG Lenkwinkelsensor für Kraftfahrzeuge
US20050259720A1 (en) * 1997-12-12 2005-11-24 Freescale Semiconductor, Inc. Ultra wide bandwidth spread-spectrum communications system
CN105404519A (zh) * 2015-12-07 2016-03-16 青岛海信电器股份有限公司 一种版本控制方法、代码测试方法及***
CN105653287A (zh) * 2015-12-31 2016-06-08 北京元心科技有限公司 一种程序自动版本发布方法和装置
CN109726104A (zh) * 2018-05-15 2019-05-07 平安普惠企业管理有限公司 移动终端的测试包生成方法、测试终端及存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050259720A1 (en) * 1997-12-12 2005-11-24 Freescale Semiconductor, Inc. Ultra wide bandwidth spread-spectrum communications system
EP1180665A2 (de) * 2000-08-11 2002-02-20 Takata-Petri AG Lenkwinkelsensor für Kraftfahrzeuge
CN105404519A (zh) * 2015-12-07 2016-03-16 青岛海信电器股份有限公司 一种版本控制方法、代码测试方法及***
CN105653287A (zh) * 2015-12-31 2016-06-08 北京元心科技有限公司 一种程序自动版本发布方法和装置
CN109726104A (zh) * 2018-05-15 2019-05-07 平安普惠企业管理有限公司 移动终端的测试包生成方法、测试终端及存储介质

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113591440A (zh) * 2021-07-29 2021-11-02 百度在线网络技术(北京)有限公司 一种文本处理方法、装置及电子设备
CN114385759A (zh) * 2022-01-13 2022-04-22 平安科技(深圳)有限公司 配置文件的同步方法、装置、计算机设备及存储介质
CN114385759B (zh) * 2022-01-13 2024-04-16 平安科技(深圳)有限公司 配置文件的同步方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN112732265B (zh) 2024-03-19

Similar Documents

Publication Publication Date Title
CN110221872B (zh) 页面跳转方法、装置、电子设备和存储介质
CN108196915B (zh) 基于应用容器引擎的代码处理方法、设备及存储介质
CN106325847B (zh) 基于iOS平台获取应用程序功能的方法和装置
US20180081658A1 (en) Method and apparatus for firmware virtualization
CN109800005B (zh) 一种客户端热更新方法及装置
CN111580926A (zh) 模型发布方法、模型部署方法、装置、设备及存储介质
CN110297776B (zh) 检测报告生成、接收方法、装置、设备及存储介质
CN111427594B (zh) 应用程序运行方法及装置
CN112732265B (zh) 一种数据处理方法和相关装置
CN113050984A (zh) 资源调取方法、装置、电子设备及存储介质
CN111367531B (zh) 代码处理方法及装置
CN110113391B (zh) 一种客户端上线方法、装置及一种客户端运行方法、装置
CN106354832B (zh) 一种数据发布方法、设备及***
CN113254217A (zh) 业务的消息处理方法、装置及电子设备
CN113360377A (zh) 一种测试方法和装置
CN109375946B (zh) 一种管理节点包管理器的组件包的方法及***
CN109086059B (zh) 代码加载更新方法、装置及服务器
CN114610446B (zh) 一种自动注入探针的方法、装置及***
CN113590179B (zh) 插件检测方法、装置、电子设备及存储介质
US20180373512A1 (en) Method and device for simulating synchronous blocking in asynchronous environment, storage medium, server and terminal
CN112817782B (zh) 一种数据采集上报方法、装置、电子设备和存储介质
CN113138768B (zh) 应用程序包生成方法、装置、电子设备以及可读存储介质
CN111427770B (zh) 一种资源测试方法及相关设备
CN114489698A (zh) 应用程序安装方法和装置
CN111158654A (zh) 算法调用方法、装置、服务器及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40042049

Country of ref document: HK

GR01 Patent grant
GR01 Patent grant