CN111026398B - 基于缓存的数据集成的构建方法与构建系统 - Google Patents
基于缓存的数据集成的构建方法与构建系统 Download PDFInfo
- Publication number
- CN111026398B CN111026398B CN201911031342.9A CN201911031342A CN111026398B CN 111026398 B CN111026398 B CN 111026398B CN 201911031342 A CN201911031342 A CN 201911031342A CN 111026398 B CN111026398 B CN 111026398B
- Authority
- CN
- China
- Prior art keywords
- fingerprint information
- data
- cache
- package
- compiling
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明涉及计算机信息技术领域,公开了一种基于缓存的数据集成的构建方法与构建系统。所述构建方法包括:基于预设的构建任务的项目信息与所述构建任务所涉及的数据的提交信息,生成针对所述构建任务的数据的编译包的指纹信息;将所述数据的编译包的指纹信息与缓存库中的缓存包的指纹信息进行比对;以及在所述数据的编译包的指纹信息与所述缓存库中的特定缓存包的指纹信息相匹配的情况下,将所述特定缓存包复制到与所述构建任务相应的构建产物目录下。本发明可避免代码分支集成过程中的相同代码重复编译过程,从而提高研发过程中的代码集成效率。
Description
技术领域
本发明涉及计算机信息技术领域,具体地涉及一种基于缓存的数据集成的构建方法与构建系统。
背景技术
在技术研发过程中,涉及到代码开发、编译、测试、部署、交付等多个流程环节。因此,在研发过程中通常使用一些能将上述流程环节做管道化的工具平台来帮助进行自动处理。同时,在规范化的流程体系中,涉及到不同分支的代码版本管理与集成。对于不同的环境,对应不同的代码分支,在当前环境下编译测试通过的分支合并进入到下一个环节的分支中进行同样的流程处理。而在很多情况下,这些分支在合并的过程中代码本身并不会发生变化,因此相同的代码重复的环节造成的是效率的浪费。
目前,对于上述研发过程,通常采用基于Java开发的一种持续集成工具jenkins作为相应的持续集成工具,该工具对于每一次集成过程,都需要经历整个代码的拉取、编译、打包等环节,故集成效率低。
发明内容
本发明的目的是提供一种基于缓存的数据集成的构建方法与构建系统,其可避免代码分支集成过程中的相同代码重复编译过程,从而提高研发过程中的代码集成效率。
为了实现上述目的,本发明一方面提供一种基于缓存的数据集成的构建方法,该构建方法包括:基于预设的构建任务的项目信息与所述构建任务所涉及的数据的提交信息,生成针对所述构建任务的数据的编译包的指纹信息;将所述数据的编译包的指纹信息与缓存库中的缓存包的指纹信息进行比对;以及在所述数据的编译包的指纹信息与所述缓存库中的特定缓存包的指纹信息相匹配的情况下,将所述特定缓存包复制到与所述构建任务相应的构建产物目录下。
优选地,所述生成针对所述构建任务的数据的编译包的指纹信息包括:基于所述预设的构建任务的项目信息,生成编译器的指纹信息;基于所述构建任务所涉及的数据的提交信息,生成所述数据所处目录的指纹信息;以及将所述编译器的指纹信息及所述数据所处目录的指纹信息组合为所述数据的编译包的指纹信息。
优选地,所述生成编译器的指纹信息包括:采用消息摘要算法对所述项目信息中的编译命令进行处理,以获取所述编译命令的信息摘要;以及从所述编译命令的信息摘要中截取第一预设长度的文本,并将所述第一预设长度的文本作为所述编译器的指纹信息。
优选地,所述生成所述数据所处目录的指纹信息包括:采用安全哈希算法对所述提交信息中的提交标识进行处理,以获取所述数据所处目录的树标识;以及从所述数据所处目录的树标识中截取第二预设长度的文本,并将所述第二预设长度的文本作为所述数据所处目录的指纹信息。
优选地,该构建方法还包括:在所述数据的编译包的指纹信息与所述缓存库中的任一缓存包的指纹信息均不匹配的情况下,执行以下操作:构建所述数据的编译包;将所构建的编译包复制到所述构建产物目录下;计算所构建的编译包的指纹信息;以及以所述编译包的指纹信息对该编译包进行命名,并将命名后的编译包缓存到所述缓存库中。
优选地,该构建方法还包括:统计指纹信息相匹配的次数和指纹信息相匹配所对应的构建过程所花费的时间;统计指纹信息不匹配的次数和指纹信息不匹配所对应的构建过程所花费的时间;基于所统计的指纹信息相匹配的次数和指纹信息相匹配所对应的构建过程所花费的时间与指纹信息不匹配的次数和指纹信息不匹配所对应的构建过程所花费的时间,计算因指纹信息相匹配所节省的构建所述数据的编译包的平均时间;以及基于所统计的指纹信息相匹配的次数与指纹信息不匹配的次数,计算缓存命中率。
本发明第二方面提供一种基于缓存的数据集成的构建系统,该构建系统包括:生成装置,用于基于预设的构建任务的项目信息与所述构建任务所涉及的数据的提交信息,生成针对所述构建任务的数据的编译包的指纹信息;比对装置,用于将所述数据的编译包的指纹信息与缓存库中的缓存包的指纹信息进行比对;以及缓存装置,用于在所述数据的编译包的指纹信息与所述缓存库中的特定缓存包的指纹信息相匹配的情况下,将所述特定缓存包复制到与所述构建任务相应的构建产物目录下。
优选地,所述生成装置包括:第一生成模块,用于基于所述预设的构建任务的项目信息,生成编译器的指纹信息;第二生成模块,用于基于所述构建任务所涉及的数据的提交信息,生成所述数据所处目录的指纹信息;以及组合模块,用于将所述编译器的指纹信息及所述数据所处目录的指纹信息组合为所述数据的编译包的指纹信息。
优选地,所述第一生成模块包括:信息摘要获取单元,用于采用消息摘要算法对所述项目信息中的编译命令进行处理,以获取所述编译命令的信息摘要;以及第一生成单元,用于从所述编译命令的信息摘要中截取第一预设长度的文本,并将所述第一预设长度的文本作为所述编译器的指纹信息。
优选地,所述第二生成模块包括:树标识获取单元,用于采用安全哈希算法对所述提交信息中的提交标识进行处理,以获取所述数据所处目录的树标识;以及第二生成单元,用于从所述数据所处目录的树标识中截取第二预设长度的文本,并将所述第二预设长度的文本作为所述数据所处目录的指纹信息。
优选地,该构建系统还包括:构建装置,用于在所述数据的编译包的指纹信息与所述缓存库中的任一缓存包的指纹信息均不匹配的情况下,执行以下操作:构建所述数据的编译包;将所构建的编译包复制到所述构建产物目录下;计算所构建的编译包的指纹信息;以及以所述编译包的指纹信息对该编译包进行命名,并将命名后的编译包缓存到所述缓存库中。
优选地,该构建系统还包括:第一统计装置,用于统计指纹信息相匹配的次数和指纹信息相匹配所对应的构建过程所花费的时间;第二统计装置,用于统计指纹信息不匹配的次数和指纹信息不匹配所对应的构建过程所花费的时间;第一计算装置,用于基于所统计的指纹信息相匹配的次数和指纹信息相匹配所对应的构建过程所花费的时间与指纹信息不匹配的次数和指纹信息不匹配所对应的构建过程所花费的时间,计算因指纹信息相匹配所节省的构建所述数据的编译包的平均时间;以及第二计算装置,用于基于所统计的指纹信息相匹配的次数与指纹信息不匹配的次数,计算缓存命中率。
通过上述技术方案,本发明创造性地通过预设的构建任务的项目信息与所述构建任务所涉及的数据的提交信息,生成针对该构建任务的数据的编译包的指纹信息,然后将生成的所述编译包的指纹信息与缓存库中的缓存包的指纹信息进行比对,若与某缓存包的指纹信息匹配,则将该缓存包直接复制到与所述构建任务相应的构建产物目录下,可避免代码分支集成过程中的相同代码重复编译过程,从而提高研发过程中的代码集成效率。
本发明第三方面提供一种机器可读存储介质,所述机器可读存储介质上存储有指令,该指令用于使得机器执行所述的基于缓存的数据集成的构建方法。
本发明第四方面提供一种处理器,用于运行程序,其中,所述程序被运行时用于执行如上所述的基于缓存的数据集成的构建方法。
本发明的其它特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本发明的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本发明,但并不构成对本发明的限制。在附图中:
图1是本发明一实施例提供的基于缓存的数据集成的构建方法的流程图;
图2是本发明一实施例提供的生成数据的编译包的指纹信息的流程图;
图3是本发明一实施例提供的生成编译器的指纹信息的流程图;
图4是本发明一实施例提供的生成所述数据所处目录的指纹信息的流程图;
图5是本发明一实施例提供的基于缓存的数据集成的构建过程的流程图;以及
图6是本发明一实施例提供的基于缓存的数据集成的构建系统的结构图。
附图标记说明
10生成装置 20比对装置
30缓存装置
具体实施方式
以下结合附图对本发明的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本发明,并不用于限制本发明。
在详细描述本发明的具体实施方式之前,简单介绍一下本发明的设计思路。在原始源码的基础上,基于构建任务通过提交提交信息的方式对原始源码进行保持或更新;然后,针对所保持的源码或更新后的源码(即,针对所述构建任务的源码,为了方便起见,下文将其统称为二代源码),生成唯一的指纹信息;接着,将所生成的指纹信息与缓冲库中的已构建的缓冲包的指纹信息进行比对,若与某缓冲包的指纹信息相匹配(即命中该缓冲包),则直接复制该缓存包;否则对二代源码进行编译以生成编译包(即对二代源码完成正常的编译过程),从而完成源码集成的构建过程。
当然,在提交提交信息之前,已经完成对原始源码的编译过程且生成编译包(即已经完成原始源码的构建过程),且将所生成的编译包作为缓冲包存储在缓冲库中。
图1是本发明一实施例提供的基于缓存的数据集成的构建方法的流程图。如图1所示,所述构建方法可包括如下步骤:步骤S101,基于预设的构建任务的项目信息与所述构建任务所涉及的数据的提交信息,生成针对所述构建任务的数据的编译包的指纹信息;步骤S102,将所述数据的编译包的指纹信息与缓存库中的缓存包的指纹信息进行比对;以及步骤S103,在所述数据的编译包的指纹信息与所述缓存库中的特定缓存包的指纹信息相匹配的情况下,将所述特定缓存包复制到与所述构建任务相应的构建产物目录下。
其中,所述针对所述构建任务的数据(例如,二代源码)的编译包的指纹信息的唯一性决定编译包的唯一性,具体描述如下:(1)编译前的源码是否发生变更;(2)编译器(或构建器)所使用的编译命令对源码的处理逻辑是否发生变更;(3)若两次编译过程的源码和编译器均未发生变化,则可以判断两次编译过程所得到的构建产物也相同。由此,本发明首先可生成针对所述构建任务的数据的编译包的唯一的指纹信息,然后通过比对所述数据(二代源码)的编译包与原始数据(原始源码)的指纹信息来确定是否需要针对所述数据进行重新构建。
对于步骤S101,如图2所示,所述生成针对所述构建任务的数据的编译包的指纹信息可包括如下步骤S201-S203。
步骤S201,基于所述预设的构建任务的项目信息,生成编译器的指纹信息。
对于步骤S201,如图3所示,所述生成编译器的指纹信息可包括如下步骤S301-S302。
步骤S301,采用消息摘要算法对所述项目信息中的编译命令进行处理,以获取所述编译命令的信息摘要。
其中,所述项目信息可包括:编译器的编译命令、项目名称及项目管理工具(git)地址等至少一种信息。可在预设的构建任务中对所述项目信息进行设置,并将该项目信息存储到数据库中。
步骤S302,从所述编译命令的信息摘要中截取第一预设长度的文本,并将所述第一预设长度的文本作为所述编译器的指纹信息。
具体地,首先,可采用消息摘要算法(MD5)对所设置的项目信息中的编译命令进行处理,然后,从处理得到的关于编译命令的信息摘要中截取定长文本作为编译器的指纹信息。并且,在每次编译命令更新时,相应地更新编译器的指纹信息。
步骤S202,基于所述构建任务所涉及的数据的提交信息,生成所述数据所处目录的指纹信息。
对于步骤S202,如图4所示,所述生成所述数据所处目录的指纹信息可包括如下步骤S401-S402。
步骤S401,采用安全哈希算法对所述提交信息中的提交标识进行处理,以获取所述数据所处目录的树标识。
每条提交信息具有标识自身特性的唯一的提交标识(即提交ID)。基于提交信息中的提交ID,采用安全哈希算法(Sha-1算法)可获取数据所处目录的树标识(即tree ID)。在本实施例中,可直接通过管理工具(git)中的哈希(hash)对象机制,采用sha-1算法得到针对每条提交信息的数据所处目录的树标识。
当目录中任何文件发生变化时,包含针对所述构建任务的数据的文件的目录的树标识相应发生变化。
步骤S402,从所述数据所处目录的树标识中截取第二预设长度的文本,并将所述第二预设长度的文本作为所述数据所处目录的指纹信息。
在通过步骤S401获取所述数据所处目录的树标识之后,从所述树标识中截取定长文本即可作为数据(二代源码)所处目录的指纹信息。
步骤S203,将所述编译器的指纹信息及所述数据所处目录的指纹信息组合为所述数据的编译包的指纹信息。
对于步骤S102,将所述数据的编译包的指纹信息与缓存库中的每一个缓存包的指纹信息进行一一比对,若与缓存包Q的指纹信息相匹配(表明命中缓存包Q),则行步骤S103;若与任一缓存包的指纹信息均不匹配,则需要对数据进行重新构建。
对于步骤S103,在数据的编译包的指纹信息与特定缓存包(例如缓存包Q)的指纹信息相匹配的情况下,将所述特定缓存包(例如缓存包Q)复制到与相应的构建产物目录下,由此可避免代码分支集成过程中的相同代码重复编译过程,从而提高研发持续集成过程中的集成效率,进而可达到策略匹配情况下的秒级编译。其中,所述构建产物目录可用于存放针对所述构建任务的所有产物。
此外,在所述数据的编译包的指纹信息与所述缓存库中的任一缓存包的指纹信息均不匹配的情况下,所述构建方还可包括:构建所述数据的编译包;将所构建的编译包复制到所述构建产物目录下;计算所构建的编译包的指纹信息;以及以所述编译包的指纹信息对该编译包进行命名,并将命名后的编译包缓存到所述缓存库中。在构建所述数据的编译包的过程中,采用与所述项目信息中的编译器的编译命令对数据进行重新编译,以生成针对所述数据的编译包。
对所述缓存库可按以下四个方面进行设计:(1)以磁盘文件存储的方式存放每个项目的缓存包,并在缓存根目录下以项目的git_ID作为路径,以编译包的指纹信息作为缓存包的名称。(2)通过应用程序编程接口(API)方式进行缓存包的读取和写入。(3)缓存库分为主库与备份库,其分别存储在不同的机器中,并通过定时同步的方式进行备份;缓存时写入主库,查找时优先从备份库中查找,备份库未命中的情况下从主库获取。(4)每两周定时清理主库内两周前的缓存包,备份库每四周清理一次(时间频率可配置);并对磁盘空间做监控,当占用达到预警线(70%)时通知管理员,以确认是否进行手动清理。
在完成构建过程后,还可对当前构建过程是否命中缓存包进行标记;并在构建任务数据中进行统计,统计指标可包括缓存命中率与缓存命中节省的累计构建时间。若某项目的构建数据中的缓存命中情况偏离整体数据较多,则可反馈给项目管理员与系统管理员进行进一步的分析。
具体地,在执行所述将命名后的编译包缓存到所述缓存库中的步骤之后,所述构建方法还可包括:统计指纹信息相匹配的次数和指纹信息相匹配所对应的构建过程所花费的时间;统计指纹信息不匹配的次数和指纹信息不匹配所对应的构建过程所花费的时间;基于所统计的指纹信息相匹配的次数和指纹信息相匹配所对应的构建过程所花费的时间与指纹信息不匹配的次数和指纹信息不匹配所对应的构建过程所花费的时间,计算因指纹信息相匹配所节省的构建所述数据的编译包的平均时间;以及基于所统计的指纹信息相匹配的次数与指纹信息不匹配的次数,计算缓存命中率。
例如,如果所统计的指纹信息相匹配的次数和指纹信息相匹配所对应的构建过程所花费的时间分别为100次、10秒;所统计的指纹信息不匹配的次数和指纹信息不匹配所对应的构建过程所花费的时间分别为5次、50秒,那么因指纹信息相匹配所节省的构建编译包的平均时间为t1=50/5-10/100=9.9秒,并且,缓存命中率为r=100/(100+5)=95.24%。由此,因缓存命中所节省的累计构建时间为t2=t1*100=990秒。
例如,可以构建一种前端使用的项目构建平台(例如,A系统),在使用中,通常会在源码管理工具git中创建多个分支,例如一个上线专用分支A、一个测试专用分支B和一个开发专用分支C。工程师在开发时将源码提交到分支C以进行开发调试,开发完成后将分支C的源码合并到分支B中(可仅提交分支C中的源码相对于分支B中的原始源码的提交信息);经过源码集成的构建过程后,可将编译包部署到测试服务器上,由测试工程师进行测试。测试通过后将分支C的源码合并到分支A中,经过构建后部署到线上服务器。相应地,构建任务是指分支C与分支B的源码集成的构建任务。
现以A系统为例对基于缓存的代码集成的构建过程进行详细地解释和描述,如图5所示。
所述基于缓存的代码集成的构建过程可包括如下步骤S501-S509。
步骤S501,接收源码的提交信息并执行初始化处理。
A系统通过管理工具git获取原始源码(来自分支B的源码)的提交信息,之后,A系统执行初始化处理:建立关于构建任务的初始化数据,将所述初始化数据排入构建处理队列,并等待队列执行直至处理到当前构建任务。其中,所述初始化数据包括在构建任务中所设置的项目信息及提交信息。
步骤S502,获取项目信息,并基于项目信息生成编译器的指纹信息。
步骤S503,获取提交信息,并基于提交信息生成二代源码所处目录的指纹信息。
步骤S504,组合所述编译器的指纹信息及所述二代源码所处目录的指纹信息为二代源码的编译包的指纹信息。
步骤S505,判断所述二代源码的编译包的指纹信息是否与特定缓存包的指纹信息相匹配,若是,则执行步骤S506;否则,执行步骤S507。
将所述二代源码的编译包的指纹信息与每个缓存包的指纹信息进行比较,若与特定缓存包Q的指纹信息相匹配(表明命中缓存包Q),则取出该缓存包Q并对其进行复制;否则,对二代源码进行重新构建。
步骤S506,将所述特定缓存包复制到构建产物目录下。
步骤S507,对二代源码进行编译,并将生成的编译包复制到构建产物目录下,并执行步骤S508。
采用与所述项目信息中的编译器的编译命令对二代源码进行重新编译。
步骤S508,计算所生成的编译包的指纹信息。
步骤S509,以所述编译包的指纹信息对该编译包进行命名,并缓存命名后的编译包。
上述构建过程中的判断策略不限于用于源码集成或合并的场景,还可以用于调试过程中的寻找历史发布的数据包的场景。
综上所述,本发明创造性地通过预设的构建任务的项目信息与所述构建任务所涉及的数据的提交信息,生成针对该构建任务的数据的编译包的指纹信息,然后将生成的所述编译包的指纹信息与缓存库中的缓存包的指纹信息进行比对,若与某缓存包的指纹信息匹配,则将该缓存包直接复制到与所述构建任务相应的构建产物目录下,可避免代码分支集成过程中的相同代码重复编译过程,从而提高研发过程中的代码集成效率。
图6是本发明一实施例提供的基于缓存的数据集成的构建系统的结构图。如图6所示,所述构建系统可包括:生成装置10,用于基于预设的构建任务的项目信息与所述构建任务所涉及的数据的提交信息,生成针对所述构建任务的数据的编译包的指纹信息;比对装置20,用于将所述数据的编译包的指纹信息与缓存库中的缓存包的指纹信息进行比对;以及缓存装置30,用于在所述数据的编译包的指纹信息与所述缓存库中的特定缓存包的指纹信息相匹配的情况下,将所述特定缓存包复制到与所述构建任务相应的构建产物目录下。
有关本发明提供的基于缓存的数据集成的构建系统的具体细节及益处可参阅上述针对基于缓存的数据集成的构建方法的描述,于此不再赘述。
相应地,本发明还提供一种机器可读存储介质,所述机器可读存储介质上存储有指令,该指令用于使得机器执行所述的基于缓存的数据集成的构建方法。
所述机器可读存储介质包括但不限于相变内存(相变随机存取存储器的简称,Phase Change Random Access Memory,PRAM,亦称为RCM/PCRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体(Flash Memory)或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备等各种可以存储程序代码的介质。
本发明第四方面提供一种处理器,用于运行程序,其中,所述程序被运行时用于执行如上所述的基于缓存的数据集成的构建方法。
以上结合附图详细描述了本发明的优选实施方式,但是,本发明并不限于上述实施方式中的具体细节,在本发明的技术构思范围内,可以对本发明的技术方案进行多种简单变型,这些简单变型均属于本发明的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合。为了避免不必要的重复,本发明对各种可能的组合方式不再另行说明。
此外,本发明的各种不同的实施方式之间也可以进行任意组合,只要其不违背本发明的思想,其同样应当视为本发明所公开的内容。
Claims (10)
1.一种基于缓存的数据集成的构建方法,其特征在于,该构建方法包括:
基于预设的构建任务的项目信息与所述构建任务所涉及的数据的提交信息,生成针对所述构建任务的数据的编译包的指纹信息;
将所述数据的编译包的指纹信息与缓存库中的缓存包的指纹信息进行比对;以及
在所述数据的编译包的指纹信息与所述缓存库中的特定缓存包的指纹信息相匹配的情况下,将所述特定缓存包复制到与所述构建任务相应的构建产物目录下,
其中,所述生成针对所述构建任务的数据的编译包的指纹信息包括:
基于所述预设的构建任务的项目信息,生成编译器的指纹信息;
基于所述构建任务所涉及的数据的提交信息,生成所述数据所处目录的指纹信息;以及
将所述编译器的指纹信息及所述数据所处目录的指纹信息组合为所述数据的编译包的指纹信息,
其中,所述生成所述数据所处目录的指纹信息包括:
采用安全哈希算法对所述提交信息中的提交标识进行处理,以获取所述数据所处目录的树标识;以及
从所述数据所处目录的树标识中截取第二预设长度的文本,并将所述第二预设长度的文本作为所述数据所处目录的指纹信息。
2.根据权利要求1所述的基于缓存的数据集成的构建方法,其特征在于,所述生成编译器的指纹信息包括:
采用消息摘要算法对所述项目信息中的编译命令进行处理,以获取所述编译命令的信息摘要;以及
从所述编译命令的信息摘要中截取第一预设长度的文本,并将所述第一预设长度的文本作为所述编译器的指纹信息。
3.根据权利要求1所述的基于缓存的数据集成的构建方法,其特征在于,该构建方法还包括:
在所述数据的编译包的指纹信息与所述缓存库中的任一缓存包的指纹信息均不匹配的情况下,执行以下操作:
构建所述数据的编译包;
将所构建的编译包复制到所述构建产物目录下;
计算所构建的编译包的指纹信息;以及
以所述编译包的指纹信息对该编译包进行命名,并将命名后的编译包缓存到所述缓存库中。
4.根据权利要求3所述的基于缓存的数据集成的构建方法,其特征在于,该构建方法还包括:
统计指纹信息相匹配的次数和指纹信息相匹配所对应的构建过程所花费的时间;
统计指纹信息不匹配的次数和指纹信息不匹配所对应的构建过程所花费的时间;
基于所统计的指纹信息相匹配的次数和指纹信息相匹配所对应的构建过程所花费的时间与指纹信息不匹配的次数和指纹信息不匹配所对应的构建过程所花费的时间,计算因指纹信息相匹配所节省的构建所述数据的编译包的平均时间;以及
基于所统计的指纹信息相匹配的次数与指纹信息不匹配的次数,计算缓存命中率。
5.一种基于缓存的数据集成的构建系统,其特征在于,该构建系统包括:
生成装置,用于基于预设的构建任务的项目信息与所述构建任务所涉及的数据的提交信息,生成针对所述构建任务的数据的编译包的指纹信息;
比对装置,用于将所述数据的编译包的指纹信息与缓存库中的缓存包的指纹信息进行比对;以及
缓存装置,用于在所述数据的编译包的指纹信息与所述缓存库中的特定缓存包的指纹信息相匹配的情况下,将所述特定缓存包复制到与所述构建任务相应的构建产物目录下,
其中,所述生成装置包括:
第一生成模块,用于基于所述预设的构建任务的项目信息,生成编译器的指纹信息;
第二生成模块,用于基于所述构建任务所涉及的数据的提交信息,生成所述数据所处目录的指纹信息;以及
组合模块,用于将所述编译器的指纹信息及所述数据所处目录的指纹信息组合为所述数据的编译包的指纹信息,
其中,所述第二生成模块包括:
树标识获取单元,用于采用安全哈希算法对所述提交信息中的提交标识进行处理,以获取所述数据所处目录的树标识;以及
第二生成单元,用于从所述数据所处目录的树标识中截取第二预设长度的文本,并将所述第二预设长度的文本作为所述数据所处目录的指纹信息。
6.根据权利要求5所述的基于缓存的数据集成的构建系统,其特征在于,所述第一生成模块包括:
信息摘要获取单元,用于采用消息摘要算法对所述项目信息中的编译命令进行处理,以获取所述编译命令的信息摘要;以及
第一生成单元,用于从所述编译命令的信息摘要中截取第一预设长度的文本,并将所述第一预设长度的文本作为所述编译器的指纹信息。
7.根据权利要求5所述的基于缓存的数据集成的构建系统,其特征在于,该构建系统还包括:
构建装置,用于在所述数据的编译包的指纹信息与所述缓存库中的任一缓存包的指纹信息均不匹配的情况下,执行以下操作:
构建所述数据的编译包;
将所构建的编译包复制到所述构建产物目录下;
计算所构建的编译包的指纹信息;以及
以所述编译包的指纹信息对该编译包进行命名,并将命名后的编译包缓存到所述缓存库中。
8.根据权利要求5所述的基于缓存的数据集成的构建系统,其特征在于,该构建系统还包括:
第一统计装置,用于统计指纹信息相匹配的次数和指纹信息相匹配所对应的构建过程所花费的时间;
第二统计装置,用于统计指纹信息不匹配的次数和指纹信息不匹配所对应的构建过程所花费的时间;
第一计算装置,用于基于所统计的指纹信息相匹配的次数和指纹信息相匹配所对应的构建过程所花费的时间与指纹信息不匹配的次数和指纹信息不匹配所对应的构建过程所花费的时间,计算因指纹信息相匹配所节省的构建所述数据的编译包的平均时间;以及
第二计算装置,用于基于所统计的指纹信息相匹配的次数与指纹信息不匹配的次数,计算缓存命中率。
9.一种机器可读存储介质,其特征在于,所述机器可读存储介质上存储有指令,该指令用于使得机器执行上述权利要求1-4中任一项所述的基于缓存的数据集成的构建方法。
10.一种处理器,其特征在于,用于运行程序,其中,所述程序被运行时用于执行如权利要求1-4中任一项所述的基于缓存的数据集成的构建方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911031342.9A CN111026398B (zh) | 2019-10-28 | 2019-10-28 | 基于缓存的数据集成的构建方法与构建系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911031342.9A CN111026398B (zh) | 2019-10-28 | 2019-10-28 | 基于缓存的数据集成的构建方法与构建系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111026398A CN111026398A (zh) | 2020-04-17 |
CN111026398B true CN111026398B (zh) | 2023-08-11 |
Family
ID=70200166
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911031342.9A Active CN111026398B (zh) | 2019-10-28 | 2019-10-28 | 基于缓存的数据集成的构建方法与构建系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111026398B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111949273B (zh) * | 2020-07-31 | 2023-04-07 | 深圳市艾特云信息技术有限公司 | 一种基于iOS系统的文件提取方法及装置 |
CN113220306A (zh) * | 2021-05-31 | 2021-08-06 | 支付宝(杭州)信息技术有限公司 | 操作执行方法、装置和电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5854932A (en) * | 1995-08-17 | 1998-12-29 | Microsoft Corporation | Compiler and method for avoiding unnecessary recompilation |
US6463582B1 (en) * | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
CN105302554A (zh) * | 2015-10-23 | 2016-02-03 | 深圳市创维电器科技有限公司 | 一种Android系统自动化程序构建方法及系统 |
US9395961B1 (en) * | 2015-12-07 | 2016-07-19 | International Business Machines Corporation | Fingerprint-based code version selection |
CN108108169A (zh) * | 2017-12-27 | 2018-06-01 | 广东小天才科技有限公司 | 一种基于Jenkins的多分支的构建方法及系统 |
CN109101608A (zh) * | 2018-08-03 | 2018-12-28 | 郑州云海信息技术有限公司 | 一种数据存储方法、数据查询方法及装置 |
CN109542415A (zh) * | 2018-11-13 | 2019-03-29 | 五八同城信息技术有限公司 | 支持应用程序并行研发的代码合并方法及相关设备 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8271964B2 (en) * | 2005-05-16 | 2012-09-18 | Microsoft Corporation | Extensible software development services |
US8677329B2 (en) * | 2009-06-03 | 2014-03-18 | Apple Inc. | Methods and apparatuses for a compiler server |
US9031922B2 (en) * | 2012-05-02 | 2015-05-12 | Microsoft Technology Licensing, Llc | Code regeneration determination from selected metadata fingerprints |
CN104881611B (zh) * | 2014-02-28 | 2017-11-24 | 国际商业机器公司 | 保护软件产品中的敏感数据的方法和装置 |
US9715377B1 (en) * | 2016-01-04 | 2017-07-25 | International Business Machines Corporation | Behavior based code recompilation triggering scheme |
-
2019
- 2019-10-28 CN CN201911031342.9A patent/CN111026398B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5854932A (en) * | 1995-08-17 | 1998-12-29 | Microsoft Corporation | Compiler and method for avoiding unnecessary recompilation |
US6463582B1 (en) * | 1998-10-21 | 2002-10-08 | Fujitsu Limited | Dynamic optimizing object code translator for architecture emulation and dynamic optimizing object code translation method |
CN105302554A (zh) * | 2015-10-23 | 2016-02-03 | 深圳市创维电器科技有限公司 | 一种Android系统自动化程序构建方法及系统 |
US9395961B1 (en) * | 2015-12-07 | 2016-07-19 | International Business Machines Corporation | Fingerprint-based code version selection |
CN108108169A (zh) * | 2017-12-27 | 2018-06-01 | 广东小天才科技有限公司 | 一种基于Jenkins的多分支的构建方法及系统 |
CN109101608A (zh) * | 2018-08-03 | 2018-12-28 | 郑州云海信息技术有限公司 | 一种数据存储方法、数据查询方法及装置 |
CN109542415A (zh) * | 2018-11-13 | 2019-03-29 | 五八同城信息技术有限公司 | 支持应用程序并行研发的代码合并方法及相关设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111026398A (zh) | 2020-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10019256B2 (en) | Systems and methods for incremental software development | |
CN106371940B (zh) | 一种程序崩溃解决方法及装置 | |
CN109791483B (zh) | 用于计算设备的共享软件库 | |
US9778926B2 (en) | Minimizing image copying during partition updates | |
US9870221B2 (en) | Providing code change job sets of different sizes to validators | |
CN109725911A (zh) | 一种多环境项目部署方法、装置、存储介质及处理器 | |
CN111026398B (zh) | 基于缓存的数据集成的构建方法与构建系统 | |
CN108776643B (zh) | 一种基于版本控制流程的目标代码合并控制方法及系统 | |
US9311079B2 (en) | Parallel development of a software system | |
CN108614702B (zh) | 字节码优化方法及装置 | |
US20110072429A1 (en) | Virtual machine relocation system and associated methods | |
CN107766354A (zh) | 一种用于保证数据正确性的方法与设备 | |
CN111597407A (zh) | 一种基于tcam的关键字匹配方法、装置、设备及存储介质 | |
CN110362316A (zh) | 一种源代码管理方法 | |
CN111400243B (zh) | 基于流水线服务的研发管理系统以及文件存储方法、装置 | |
US8819494B2 (en) | Automatically changing parts in response to tests | |
CN114860296A (zh) | 软件持续集成方法、装置和存储介质 | |
CN112579591B (zh) | 数据校验方法、装置、电子设备及计算机可读存储介质 | |
CN114185598A (zh) | 一种信息获取方法、装置、计算机设备和存储介质 | |
CN109062789B (zh) | 持续集成方法、装置及设备、可读存储介质 | |
CN114391136A (zh) | 增强的虚拟机镜像管理系统 | |
US20110208945A1 (en) | Generating random addresses for verification of distributed computerized devices | |
US6782523B2 (en) | Parallel configurable IP design methodology | |
CN111949505B (zh) | 一种测试方法、装置及设备 | |
CN112882720B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |