日志构建方法和系统与流程

文档序号:16087385发布日期:2018-11-27 22:35阅读:171来源:国知局

本发明涉及计算机软件技术领域,尤其涉及日志构建方法和系统。



背景技术:

代码仓库有很多分支,经常需要一个分支合并到另外一个分支,分支合并有一定的风险,为了能够提前知道风险,需要通过代码编译平台对代码仓库中的相应代码进行合并测试,然后将代码编译平台的测试结果返回到代码仓库中进行展示。

然而,目前的返回结果是固定内容或者代码编译平台的自身的环境变量,代码仓库中不能看到代码编译平台根据测试结果构建的日志,需要额外登陆代码编译平台查看日志报错信息,导致操作复杂度较高。



技术实现要素:

有鉴于此,本发明提供一种日志构建方法和系统。

具体地,本发明是通过如下技术方案实现的:

根据本发明实施例的第一方面,提供一种日志构建方法,所述方法包括:在代码编译平台中定义变量;读取所述代码编译平台中的日志内容,将所述日志内容赋值给所述变量;通过代码编译平台中的插件将所述变量返回至代码仓库,以在所述代码仓库中构建所述日志内容对应的日志。

可选地,在将所述日志内容赋值给所述变量之前,所述方法还包括:读取所述日志中的换行符;将所述换行符替换为所述代码仓库可识别的换行符。

可选地,读取代码编译平台的日志内容的步骤包括:获取所述代码编译平台所执行的编译任务的任务标识;根据所述任务标识调用所述代码编译平台的API;通过所述API获取所述代码编译平台的日志内容。

可选地,将所述日志内容赋值给所述变量的步骤包括:从所述日志内容中筛选出有用信息;将所述有用信息赋值给所述变量。

可选地,在通过代码编译平台中的插件将所述变量返回至代码仓库之前,所述方法还包括:将所述变量转换为所述插件可识别的格式。

可选地,所述方法还包括:在代码编译平台中保存所述日志内容。

可选地,所述日志内容为所述代码编译平台最近一次执行编译任务所构建的日志。

可选地,所述插件为EnvInject API Plugin插件。

可选地,所述代码编译平台为Jenkins,所述代码仓库为Gitlab。

根据本发明实施例的第二方面,提供一种日志构建系统,所述系统包括:变量定义模块,用于在代码编译平台中定义变量;赋值模块,用于读取所述代码编译平台中的日志内容,将所述日志内容赋值给所述变量;日志构建模块,用于通过代码编译平台中的插件将所述变量返回至代码仓库,以在所述代码仓库中构建所述日志内容对应的日志。

可选地,所述系统还包括:读取模块,用于读取所述日志中的换行符;替换模块,用于将所述换行符替换为所述代码仓库可识别的换行符。

可选地,所述赋值模块包括:获取单元,用于获取所述代码编译平台所执行的编译任务的任务标识;调用单元,用于根据所述任务标识调用所述代码编译平台的API;获取单元,用于通过所述API获取所述代码编译平台的日志内容。

可选地,所述赋值模块还包括:筛选单元,用于从所述日志内容中筛选出有用信息;赋值单元,用于将所述有用信息赋值给所述变量。

可选地,所述系统还包括:格式转换模块,用于将所述变量转换为所述插件可识别的格式。

可选地,所述系统还包括:保存模块,用于在代码编译平台中保存所述日志内容。

可选地,所述日志内容为所述代码编译平台最近一次执行编译任务所构建的日志。

可选地,所述插件为EnvInject API Plugin插件。

可选地,所述代码编译平台为Jenkins,所述代码仓库为Gitlab。

根据本发明实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现任意实施例所述方法的步骤。

根据本发明实施例的第四方面,提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现任意实施例所述方法的步骤。

应用本发明实施例方案,通过在代码编译平台中定义变量,读取所述代码编译平台中的日志内容,将所述日志内容赋值给所述变量,通过代码编译平台中的插件将所述变量返回至代码仓库,从而可以在所述代码仓库中构建所述日志内容对应的日志,本方案无需额外登陆代码编译平台查看日志,而是直接在软件仓库中构建日志,操作复杂度低。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。

附图说明

图1是本发明一示例性实施例示出的代码编译平台与代码仓库的交互过程示意图。

图2是本发明一示例性实施例示出的日志构建方法流程图。

图3是本发明一示例性实施例示出的日志构建方法的逻辑结构图。

图4是本发明一示例性实施例示出的分支合并过程的总体流程图。

图5是本发明一示例性实施例示出的日志构建系统的结构框图。

图6是本发明一示例性实施例示出的一种计算机设备的结构示意图。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

应当理解,尽管在本发明可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本发明范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。

如图1,是本发明一示例性实施例示出的代码编译平台与代码仓库的交互过程示意图。在该实施例中,代码仓库中可以存储各类代码,代码编译平台用于提供代码编译所需的环境框架。代码仓库与代码编译平台可以进行数据交互,交互过程可包括以下步骤:

在步骤101中,代码仓库向代码编译平台发送所需编译的软件代码。

在步骤102中,代码编译平台对代码进行编译,得到日志,日志中可以记录编译结果。

在步骤103中,代码编译平台可以将一些环境变量,或者固定内容发送至代码仓库,用户可以在代码仓库中直接查看这些环境变量或者固定内容对应的日志。

在步骤104中,如果用户需要查看代码编译平台构建的日志,则需要由用户登录代码编译平台进行查看。

通过上述过程可知,代码仓库中不能看到代码编译平台根据测试结果构建的日志,需要额外登陆代码编译平台查看日志报错信息,导致操作复杂度较高。

基于此,本发明实施例提供一种日志构建方法,如图2所示,所述方法可包括以下步骤:

步骤201,在代码编译平台中定义变量;

步骤202,读取所述代码编译平台中的日志内容,将所述日志内容赋值给所述变量;

步骤203,通过代码编译平台中的插件将所述变量返回至代码仓库,以在所述代码仓库中构建所述日志内容对应的日志。

在步骤201中,可以通过代码编译平台中的变量定义插件来定义变量。变量定义插件能够提供自定义环境变量功能。根据插件的需要设置的变量和变量值可以是key=value格式。

在步骤202中,代码编译平台中的日志内容可以是代码编译平台对代码仓库中的代码进行编译后构建的日志中的内容。例如,代码编译平台对代码编译失败,可生成错误日志。日志内容可以是一串字符串。

在步骤203中,代码编译平台中的插件可以是具有变量返回功能的插件,该插件可以预先安装至代码编译平台中。本步骤中具有变量返回功能的插件与上述具有变量定义功能的插件可以是同一个插件,也可以是两个不同的插件。由于日志内容已经赋值给变量,在本步骤中,通过将变量返回至代码仓库,从而可以使代码仓库获取到变量值,也即是获取到日志内容。代码仓库可以根据获取到的日志内容构建日志。

本发明实施例无需额外登陆代码编译平台查看日志,而是直接在软件仓库中构建日志,操作复杂度低,同时方便了用户查看日志内容。而且,本发明实施例的方案可以根据编译结果在代码仓库中动态地构建对应的日志,每次编译结果不同,获取到的日志内容也不同,从而在代码仓库中构建日志的结果也不同。

在一个实施例中,在将所述日志内容赋值给所述变量之前,所述方法还包括:读取所述日志中的换行符;将所述换行符替换为所述代码仓库可识别的换行符。由于代码仓库可识别的代码类型与代码编译平台可识别的代码类型可能有所不同,如果不经过转换,代码仓库中显示的日志无法识别出原日志中不同行的代码,因此代码仓库构建的日志中的内容会连成片(例如,可能是一行很长的字符),不便于查看。通过上述转换,可以将换行符替换为所述代码仓库可识别的换行符,从而在代码仓库的日志中显示与原日志相同的经过格式化的内容(例如,原日志中有5行日志内容,新构建的日志中也相应地有5行内容),更加方便用户查看。

在一个实施例中,读取代码编译平台的日志内容的步骤包括:获取所述代码编译平台所执行的编译任务的任务标识;根据所述任务标识调用所述代码编译平台的API(Application Programming Interface,应用程序编程接口);通过所述API获取所述代码编译平台的日志内容。代码编译平台所执行的编译任务可以称为一个“Job”,编译任务的任务标识可以是任务名称。当需要对代码仓库中的代码进行编译时,代码编译平台可以创建一个编译任务,每个编译任务会分别生成一个日志。因此,通过编译任务的任务标识可以快速查找到对应的日志。

在一个实施例中,将所述日志内容赋值给所述变量的步骤包括:从所述日志内容中筛选出有用信息;将所述有用信息赋值给所述变量。由于一份日志中可能包括很多内容,但未必所有内容中都包括用户需要的有用信息,因此,通过对日志内容进行筛选,可以过滤掉无用信息,节约用户查看日志的时间。在筛选时,可以在日志编译平台中导入一段代码,代码可以采用现有的代码来实现。代码中可以包括所需日志内容在日志中的行数或者行数范围。

在一个实施例中,在通过代码编译平台中的插件将所述变量返回至代码仓库之前,所述方法还包括:将所述变量转换为所述插件可识别的格式。

在一个实施例中,还可以在代码编译平台中保存所述日志内容。具体地,可以将赋值给变量的日志内容存储到一个新的文件中,并将该文件存储在代码编译平台中,以便进行存档。

在一个实施例中,所述日志内容为所述代码编译平台最近一次执行编译任务所构建的日志。软件仓库每次都对代码编译平台最近一次编译所生成的日志进行构建,能够根据编译结果在代码仓库中动态地构建对应的日志,每次编译结果不同,获取到的日志内容也不同,从而在代码仓库中构建日志的结果也不同。

在一个实施例中,所述代码编译平台为Jenkins,所述代码仓库为Gitlab。在一个实施例中,所述插件为EnvInject API Plugin插件。

下面以一个具体的应用实例为例对本发明的方案进行说明。如图3所示,本发明实施例的日志构建方法可包括以下步骤:

步骤301,获取Jenkins最近一次Job所构建的日志。

步骤302:获取日志内容,其中,日志内容是包括换行符的字符串。

步骤303:将字符串中的换行符用<br/>替换。

步骤304:将替换后的字符串赋值给version变量,该变量格式为version=“ssss<br/>ssss”,其中,“ssss”为日志内容。

步骤305:将步骤304中的内容存入新的文件。

步骤306:Jenkins构建完成后读取新文件内容。

步骤307:插件引用${version}获取日志内容返回到Gitlab,其中,${version}是与version变量对应的插件可识别的变量。

根据上述方式在Gitlab中进行分支合并过程的总体流程如图4所示,可包括以下步骤:

步骤401:用户在Gitlab中提交merge request,以执行分支合并测试请求。

步骤402:根据merge request触发Jenkins对应的Job。

步骤403:Jenkins构建,即在Jenkins中编译代码,以便生成日志。

步骤404:可选地,将固定内容或者Jenkins环境变量导入Gitlab中。

步骤405:将Jenkins生成的日志构建到Gitlab中。

其中,步骤405可采用上述步骤301至步骤307实现。步骤404中所述的固定内容或者环境变量也可以通过步骤405中的日志导入到Gitlab中。

通过本发明实施例在代码仓库中构建日志后,Gitlab的显示界面中可包括从Jenkins中返回的固定内容,以及Jenkins返回的日志内容。

如图5所示,本发明还提供一种日志构建系统,所述系统包括:

变量定义模块501,用于在代码编译平台中定义变量;

赋值模块502,用于读取所述代码编译平台中的日志内容,将所述日志内容赋值给所述变量;

日志构建模块503,用于通过代码编译平台中的插件将所述变量返回至代码仓库,以在所述代码仓库中构建所述日志内容对应的日志。

上述系统中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

在一个实施例中,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任意一实施例的方法。

在一个实施例中,本发明还提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述任意一实施例的方法。如图6所示,图6是根据一示例性实施例示出的一种用于日志构建的计算机设备600的框图。

参照图6,计算机设备600包括处理组件601,其进一步包括一个或多个处理器,以及由存储器602所代表的存储器资源,用于存储可由处理组件601的执行的指令,例如应用程序。存储器602中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件601被配置为执行指令,以执行上述方法。

计算机设备600还可以包括一个电源组件603被配置为执行计算机设备600的电源管理,一个有线或无线网络接口604被配置为将计算机设备600连接到网络,和一个输入输出(I/O)接口605。计算机设备600可以操作基于存储在存储器602的操作系统。

其中,当所述存储器602中的指令由所述处理组件601执行时,使得计算机设备600能够执行上述任一实施例的方法。

本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。

本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。

适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。

适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。

虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。

类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。

由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1