一种用于持续集成***的数据处理方法及装置
技术领域
本发明涉及数据处理领域,特别涉及一种用于持续集成***的数据处理方法及装置。
背景技术
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。在持续集成***中某些工具执行完成后其他工具才被触发执行,先执行的工具称为上游工具,后执行的工具称为下游工具。
现有技术中下游工具如果配置多个上游工具,任一个上游工具执行完成后都会触发下游工具执行,相当于下游工具其实只能有一个上游工具。
而且,现有技术中上游工具在执行完成后,不判断执行结果是成功还是失败都触发下游工具,从而导致下游工具不必要的触发,导致下游工具不必要的执行或者运行出错,增加执行时间和浪费资源。且上下游工具是通过环境变量来传递工具间的参数,上下游工具要同时支持相同的环境变量,上下游工具间的耦合度高。
发明内容
为了解决相关技术中上游工具在执行完成后,不判断执行结果是成功还是失败都触发下游工具,从而导致下游工具不必要的触发,导致下游工具不必要的执行或者运行出错,增加执行时间和浪费资源的问题,本发明实施例提供了一种用于持续集成***的数据处理方法及装置。所述技术方案如下:
根据本发明实施例的第一方面,提供一种数据处理方法,所述方法包括:
设置至少一个上游工具与下游工具之间的依赖关系;
触发所述上游工具执行;
判断所述至少一个上游工具是否全部执行完成且执行结果是否满足所述下游工具的依赖条件;
若所述上游工具执行完成且执行结果满足所述下游工具的依赖条件,则触发所述下游工具执行。
根据本发明实施例的第二方面,提供一种数据处理装置,所述装置包括:
设置模块,用于设置至少一个上游工具与下游工具之间的依赖关系;
上游工具触发模块,用于触发所述上游工具执行;
判断模块,用于判断所述至少一个上游工具是否全部执行完成且执行结果是否满足所述下游工具的依赖条件;
下游工具触发模块,用于:若所述上游工具执行完成且执行结果满足所述下游工具的依赖条件,则触发所述下游工具执行。
本发明实施例提供的技术方案可以包括以下有益效果:
现有技术中下游工具如果配置多个上游工具,任一个上游工具执行完成后都会触发下游工具执行,相当于下游工具其实只能有一个上游工具,本实施例提供的数据处理方法支持多个上游工具都执行完成后才触发下游工具,支持一个下游工具可以有单个或者多个上游工具。现有技术中上游工具在执行完成后,不判断执行结果是成功还是失败都触发下游工具,本实施例提供的数据处理方法中可以设置下游工具对上游工具的依赖条件,避免下游工具不必要的触发、工具不必要的执行或者运行出错、增加执行时间和浪费资源。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是根据一示例性实施例示出的一种用于持续集成***的数据处理方法的流程图;
图2根据另一示例性实施例示出的一种用于持续集成***的数据处理方法的流程图;
图3是图2中步骤301的具体方法流程图;
图4根据一示例性实施例示出的一种数据处理装置的框图;
图5是根据另一示例性实施例示出的一种数据处理装置的框图。
通过上述附图,已示出本发明明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本发明构思的范围,而是通过参考特定实施例为本领域技术人员说明本发明的概念。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
图1是根据一示例性实施例示出的一种用于持续集成***的数据处理方法的流程图,该数据处理方法可以包括如下几个步骤:
步骤201,设置至少一个上游工具与下游工具之间的依赖关系。
步骤202,触发所述上游工具执行。
步骤203,判断所述至少一个上游工具是否全部执行完成且执行结果是否满足所述下游工具的依赖条件。
步骤204,若所述上游工具执行完成且执行结果满足所述下游工具的依赖条件,则触发所述下游工具执行。
以C/C++项目为例,只有在编译成功之后才能进行自动化测试,那么编译工具是上游工具,自动化测试工具是下游工具,在持续集成***中设置自动化测试工具依赖自动编译工具且依赖条件是执行成功。在实际执行时,先执行自动编译工具,自动化测试工具处于等待执行的状态,在自动编译工具执行完成且编译成功时才触发自动化测试工具,否则自动化测试的工具就不会再触发执行。
综上所述,现有技术中下游工具如果配置多个上游工具,任一个上游工具执行完成后都会触发下游工具执行,相当于下游工具其实只能有一个上游工具,本实施例提供的数据处理方法支持多个上游工具都执行完成后才触发下游工具,支持一个下游工具可以有单个或者多个上游工具。现有技术中上游工具在执行完成后,不判断执行结果是成功还是失败都触发下游工具,本实施例提供的数据处理方法中可以设置下游工具对上游工具的依赖条件,避免下游工具不必要的触发、工具不必要的执行或者运行出错、增加执行时间和浪费资源。
图2是根据另一示例性实施例示出的一种用于持续集成***的数据处理方法的流程图,该数据处理方法可以包括如下几个步骤:
步骤301,设置至少一个上游工具与下游工具之间的依赖关系。
请一并参阅图3,具体地,上述步骤301包括:
步骤3011:所述上游工具中设置输出名,所述上游工具通过持续集成***的接口上报所述上游工具执行的结果和数据,持续集成***记录所述上游工具的输出值。
步骤3012:所述下游工具依赖所述上游工具的结果和数据的配置设置成依赖所述上游工具的输出。
步骤302,触发所述上游工具执行。
步骤303,判断所述至少一个上游工具是否全部执行完成且执行结果是否满足所述下游工具的依赖条件。
步骤304,若执行结果不满足所述下游工具的依赖条件,则标记所述下游工具的状态为依赖失败。
步骤305,若所述上游工具执行完成且执行结果满足所述下游工具的依赖条件,则触发所述下游工具执行。
步骤306,持续集成***将所述上游工具的输出值传给所述下游工具的配置,并下发配置文件给所述下游工具。
步骤307,所述下游工具解析持续集成***下发给下游工具的配置文件,获取所需要的配置。
其中,在步骤302的触发所述上游工具执行之后,以及步骤306的触发所述下游工具执行之前,所述下游工具保持等待状态。
具体的,以C/C++项目为例,只有在编译成功之后才能进行自动化测试,那么编译工具是上游工具,自动化测试工具是下游工具,在持续集成***中设置自动化测试工具依赖自动编译工具且依赖条件是执行成功。在实际执行时,先执行自动编译工具,自动化测试工具处于等待执行的状态,在自动编译工具执行完成且编译成功时才触发自动化测试工具,否则自动化测试的工具就不会再触发执行。
比如上游的自动编译工具设置输出output,用于存放实际编译出的文件路径。下游的自动化测试工具的配置checkFile的值设置为使用自动编译的output。在编译工具执行成功后通过持续集成接口上报实际编译出的文件路径,由持续集成***记录编译文件路径,在启动下游的自动化测试工具执行时,持续集成***在生成自动化测试工具的配置时,检测到是使用自动编译的output,会自动将output的实际值(编译文件路径)赋给checkFile下发给自动化测试工具,自动化测试工具在执行时只需正常解析checkFile即可,无需关注上游的编译工具是如何设置输出的。
综上所述,现有技术中下游工具如果配置多个上游工具,任一个上游工具执行完成后都会触发下游工具执行,相当于下游工具其实只能有一个上游工具,本实施例提供的数据处理方法支持多个上游工具都执行完成后才触发下游工具,支持一个下游工具可以有单个或者多个上游工具。现有技术中上游工具在执行完成后,不判断执行结果是成功还是失败都触发下游工具,本实施例提供的数据处理方法中可以设置下游工具对上游工具的依赖条件,避免下游工具不必要的触发、工具不必要的执行或者运行出错、增加执行时间和浪费资源。现有技术中上下游工具是通过环境变量来传递工具间的参数,上下游工具要同时支持相同的环境变量,工具间的耦合度高,本实施例提供的数据处理方法中上下游工具的参数传递由持续集成***完成,上下游工具间参数传递是透明的,耦合度低。
图4是根据一示例性实施例示出的一种数据处理装置的框图,该数据处理装置可以包括:设置模块110、上游工具触发模块120、判断模块130和下游工具触发模块140。
设置模块110,用于设置至少一个上游工具与下游工具之间的依赖关系。
上游工具触发模块120,用于触发所述上游工具执行。
判断模块130,用于判断所述至少一个上游工具是否全部执行完成且执行结果是否满足所述下游工具的依赖条件。
下游工具触发模块140,用于:若所述上游工具执行完成且执行结果满足所述下游工具的依赖条件,则触发所述下游工具执行。
综上所述,现有技术中下游工具如果配置多个上游工具,任一个上游工具执行完成后都会触发下游工具执行,相当于下游工具其实只能有一个上游工具,本实施例提供的数据处理装置支持多个上游工具都执行完成后才触发下游工具,支持一个下游工具可以有单个或者多个上游工具。现有技术中上游工具在执行完成后,不判断执行结果是成功还是失败都触发下游工具,本实施例提供的数据处理装置中可以设置下游工具对上游工具的依赖条件,避免下游工具不必要的触发、工具不必要的执行或者运行出错、增加执行时间和浪费资源。
图5是根据另一示例性实施例示出的一种数据处理装置的框图,该数据处理装置可以包括:设置模块210、上游工具触发模块220、下发模块230、解析模块240、判断模块250、下游工具触发模块260及标记模块270。
设置模块210,用于设置至少一个上游工具与下游工具之间的依赖关系。
上游工具触发模块220,用于触发所述上游工具执行。
下发模块230,用于:所述触发所述上游工具执行步骤之后,将所述上游工具的输出值传给所述下游工具的配置,并下发配置文件给所述下游工具。
判断模块250,用于判断所述至少一个上游工具是否全部执行完成且执行结果是否满足所述下游工具的依赖条件。
下游工具触发模块260,用于:若所述上游工具执行完成且执行结果满足所述下游工具的依赖条件,则触发所述下游工具执行。
标记模块270,用于在所述判断所述上游工具是否执行完成且执行结果是否满足所述下游工具的依赖条件步骤之后,若执行结果不满足所述下游工具的依赖条件,则标记所述下游工具的状态为依赖失败。
可选的,所述设置模块210,还用于:
在所述上游工具中设置输出名,所述上游工具通过持续集成***的接口上报所述上游工具执行的结果和数据,持续集成***记录所述上游工具的输出值;
所述下游工具依赖所述上游工具的结果和数据的配置设置成依赖所述上游工具的输出。
可选的,所述数据处理装置还包括解析模块240,用于:在所述触发所述下游工具执行步骤之后,所述下游工具解析持续集成***下发给下游工具的配置文件,获取所需要的配置。
综上所述,现有技术中下游工具如果配置多个上游工具,任一个上游工具执行完成后都会触发下游工具执行,相当于下游工具其实只能有一个上游工具,本实施例提供的数据处理装置支持多个上游工具都执行完成后才触发下游工具,支持一个下游工具可以有单个或者多个上游工具。现有技术中上游工具在执行完成后,不判断执行结果是成功还是失败都触发下游工具,本实施例提供的数据处理装置中可以设置下游工具对上游工具的依赖条件,避免下游工具不必要的触发、工具不必要的执行或者运行出错、增加执行时间和浪费资源。现有技术中上下游工具是通过环境变量来传递工具间的参数,上下游工具要同时支持相同的环境变量,工具间的耦合度高,本实施例提供的数据处理装置中上下游工具的参数传递由持续集成***完成,上下游工具间参数传递是透明的,耦合度低。
本领域技术人员在考虑说明书及实践这里发明的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未发明的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。