CN112099843A - 代码托管平台管理方法、装置、计算机设备及存储介质 - Google Patents
代码托管平台管理方法、装置、计算机设备及存储介质 Download PDFInfo
- Publication number
- CN112099843A CN112099843A CN202010964414.1A CN202010964414A CN112099843A CN 112099843 A CN112099843 A CN 112099843A CN 202010964414 A CN202010964414 A CN 202010964414A CN 112099843 A CN112099843 A CN 112099843A
- Authority
- CN
- China
- Prior art keywords
- task
- code
- event
- execution
- hosting platform
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及计算机领域,公开了一种代码托管平台管理方法、装置、计算机设备及存储介质,包括:监听代码托管平台是否接收到代码事件;若代码托管平台接收到代码事件,则执行任务进程以根据预设的集成配置信息配置代码事件得到任务事件;调用运行模块执行任务库中执行状态为未执行的任务事件,并获得任务事件的执行结果;监听代码托管平台中类型为pull request的代码事件的评审状态和检查状态;若评审状态均为同意,且检查状态为成功,则根据执行结果合并代码事件。本发明保证了能够及时对该平台的事件进行处理,实现了自动执行任务事件的技术效果,避免了重复执行任务库中的任务事件,实现了自动合并代码事件的技术效果,提高了代码合并工作的效率。
Description
技术领域
本发明涉及计算机的研发管理技术领域,尤其涉及一种代码托管平台管理方法、装置、计算机设备及存储介质。
背景技术
可持续集成应用在代码托管平台上(如:Gitlab和GitHub),是现如今业内对项目管理的一个重要环节,实时合理的CI会有效的帮助检测出提交的代码正确性和规范性,因此,搭建了CI标准化工作平台后,开发人员通过监控CI的状态、详细日志,及时合并PullRequest、关闭Issues等操作。
目前业内的可持续集成平台无法提供自动Actions功能,即自动执行代码事件所生成的任务事件,其需要开发人员调用外界的运行模块运行任务事件方可获得执行结果。
然而发明人意识到,外界的运行模块通常因无法运行自定义的runner脚本,即:具有自定义runner脚本的运行模块,导致其无法适应不同情况下的任务事件;同时,又由于当前合并pull request的代码事件的方法通常需要开发人员在代码托管平台上注意合并,导致当前开发人员需要时刻关注各pipeline任务的执行结果,以及时合并类型为pullrequest类型代码事件,为开发工作带来了极大的不便。
发明内容
本发明的目的是提供一种代码托管平台管理方法、装置、计算机设备及存储介质,用于解决现有技术存在的因无法运行自定义的runner脚本,导致其无法适应不同情况下的任务事件;以及,因人工合并导致当前开发人员需要时刻关注各pipeline任务的执行结果,为开发工作带来了极大的不便的问题。
为实现上述目的,本发明提供一种代码托管平台管理方法,包括:
监听代码托管平台是否接收到代码事件;
若所述代码托管平台接收到代码事件,则执行任务进程以根据预设的集成配置信息配置所述代码事件得到任务事件,其中,所述集成配置信息中定义了调度及触发预设的运行模块的方法,以及执行任务事件获得执行结果的方法;
调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果;
监听代码托管平台中类型为pull request的代码事件的评审状态和检查状态;若所述评审状态均为同意,且检查状态为成功,则根据所述执行结果合并所述代码事件。
上述方案中,调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果的步骤,包括:
接收控制端发送的标签信息和关联组信息;
将所述标签信息和关联组信息写入运行模块的标签上,其中,所述标签可写入至少一个标签信息和关联组信息;
调用运行模块执行任务库中与所述运行模块的任务标签和关联组标签对应,且执行状态为未执行的pipeline任务,并获得所述pipeline任务的执行结果;
汇总所述任务事件中各pipeline任务的执行结果,获得所述任务事件的执行结果。
上述方案中,调用运行模块执行任务库中与所述运行模块的任务标签和关联组标签对应,且执行状态为未执行的pipeline任务,并获得所述pipeline任务的执行结果的步骤,包括:
识别运行状态为空闲的运行模块;
调用该运行模块执行所述任务库中与所述运行模块的任务标签和关联组标签对应,且,执行状态为未执行的pipeline任务,并将所述任务库中所述pipeline任务的执行状态修改为执行中;
监控所述运行模块执行所述pipeline任务的进度,若所述运行模块执行完成所述pipeline任务,则获得所述pipeline任务的执行结果,并将所述pipeline任务的执行状态修改为已执行;
识别所述任务事件中是否具有类型为pull request的pipeline任务;若是,则将所述pipeline任务的执行结果同步到代码托管平台的检查模块。
上述方案中,调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果之后,包括:
提取所述运行模块执行任务事件所生成的运行日志,汇总所述任务事件的基本信息、执行结果和运行日志形成事件数据,提取运行模块的运行状态和运行内容获得模块数据,其中,所述任务事件的基本信息包括任务事件的生成时间、提交的信息、Commit SHA、执行状态,所述运行状态反映了所述运行模块当前工作状态,所述运行内容描述了所述运行模块当前执行的任务事件或pipeline任务。
上述方案中,调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果之后,包括:
接收控制端发送的控制信息,根据所述控制信息控制所述运行模块重新执行执行结果为失败或执行超时的任务事件,或取消正在执行的任务事件。
上述方案中,根据所述执行结果合并所述代码事件的步骤,包括:
汇总属于同一项目的代码事件形成事件集合;
判断所述事件集合中各代码事件执行结果是否均为通过;
若均为通过,则调用代码托管平台中的合并模块合并所述事件集合中的代码事件,得到目标代码事件并将其发送至所述代码托管平台;
若至少有一个执行结果为未通过,则向控制端和代码托管平台返回拒绝合并信息。
上述方案中,根据所述执行结果合并所述代码事件之后,包括:
从代码托管平台中获取事务信息并识别与所述事务信息对应的项目,提取所述项目的集成配置信息;监听代码托管平台根据所述事务信息生成的变更信息,提取所述集成配置信息中预设的关闭规则,并判断所述变更信息是否符合所述关闭规则;若符合,则关闭所述事务信息;若不符合,则向控制端和代码托管平台返回拒绝关闭信息;
根据所述执行结果合并所述代码事件之后,还包括:
将所述合并的代码事件上传至区块链中。
为实现上述目的,本发明还提供一种代码托管平台管理装置,包括:
事件监听模块,用于监听代码托管平台是否接收到代码事件;
事件配置模块,用于在所述代码托管平台接收到代码事件时,执行任务进程以根据预设的集成配置信息配置所述代码事件得到任务事件,其中,所述集成配置信息中定义了调度及触发预设的运行模块的方法,以及执行任务事件获得执行结果的方法;
事件执行模块,用于调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果;
监听合并模块,用于监听代码托管平台中类型为pull request的代码事件的评审状态和检查状态;若所述评审状态均为同意,且检查状态为成功,则根据所述执行结果合并所述代码事件。
为实现上述目的,本发明还提供一种计算机设备,其包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述计算机设备的处理器执行所述计算机程序时实现上述代码托管平台管理方法的步骤。
为实现上述目的,本发明还提供一种计算机存储介质,所述存储介质上存储有计算机程序,所述存储介质存储的所述计算机程序被处理器执行时实现上述代码托管平台管理方法的步骤。
本发明提供的代码托管平台管理方法、装置、计算机设备及存储介质,通过监听接收到的监听代码托管平台所述项目的事件,以保证能够及时获知代码托管平台的代码事件,进而保证能够及时对该平台的事件进行处理;通过集成配置信息实现了自定义运行runner的技术效果,扩大了使用范围,保证了运行runner的灵活性;通过调用运行模块执行任务库中的任务事件并获得相应的执行结果,以保证代码的有效性,实现了自动执行任务事件的技术效果;同时,通过在任务库中的任务事件上添加反映任务事件执行状态的执行标签,以确保运行模块仅执行未执行的任务事件,避免重复执行任务库中的任务事件,导致服务器算力浪费;通过监听代码事件的评审状态和检查状态及合并所述代码事件,实现了自动合并代码事件的技术效果,提高了代码合并工作的效率,避免了当前开发人员需要时刻关注各pipeline任务的执行结果,以及时合并类型为pull request类型代码事件,导致开发人员工作繁重的问题出现。
附图说明
图1为本发明代码托管平台管理方法实施例一的流程图;
图2为本发明代码托管平台管理方法实施例二中代码托管平台管理方法的环境应用示意图;
图3是本发明代码托管平台管理方法实施例二中代码托管平台管理方法的具体方法流程图;
图4是本发明代码托管平台管理方法实施例二中调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果的流程图;
图5是本发明代码托管平台管理方法实施例二中调用运行模块执行任务库中与所述运行模块的任务标签和关联组标签对应,且执行状态为未执行的pipeline任务,并获得所述pipeline任务的执行结果的流程图;
图6是本发明代码托管平台管理方法实施例二中根据所述执行结果合并所述代码事件的流程图;
图7为本发明代码托管平台管理装置实施例三的程序模块示意图;
图8为本发明计算机设备实施例四中计算机设备的硬件结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
现提供以下实施例:
实施例一:
请参阅图1,本实施例的一种代码托管平台管理方法,包括:
S102:监听代码托管平台是否接收到代码事件;
S103:若所述代码托管平台接收到代码事件,则执行任务进程以根据预设的集成配置信息配置所述代码事件得到任务事件,其中,所述集成配置信息中定义了调度及触发预设的运行模块的方法,以及执行任务事件获得执行结果的方法;
S104:调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果;
S108:监听代码托管平台中类型为pull request的代码事件的评审状态和检查状态;若所述评审状态均为同意,且检查状态为成功,则根据所述执行结果合并所述代码事件。
在示例性的实施例中,通过调用代码托管平台的webhook,实时监听GitHub接收到的监听代码托管平台所述项目的事件。以保证能够及时获知代码托管平台的代码事件(例如:push、pull request事件),进而保证能够及时对该平台的事件进行处理(如:合并、关闭issues)。所述代码事件的类型包括:push和pull request。所述集成配置信息为ci.yml文件,其中,所述ci.yml配置包括:ci-server执行脚本和ci-runner执行脚本;ci-server执行脚本定义了调度及触发运行模块的方法;ci-runner执行脚本定义了执行任务事件获得执行结果的方法(如:测试,编译,打包等)。因此,通过集成配置信息实现了自定义运行runner的技术效果,扩大了使用范围,保证了运行runner的灵活性。
通过调用运行模块执行任务库中的任务事件并获得相应的执行结果,以保证代码的有效性,实现了自动执行任务事件的技术效果;同时,为避免重复执行任务库中的任务事件,导致服务器算力浪费,本步骤通过在任务库中的任务事件上添加反映任务事件执行状态的执行标签,所述执行标签包括未执行,已执行和执行中,以确保运行模块仅执行未执行的任务事件。
通过监听代码托管平台中类型为pull request的代码事件的评审状态和检查状态;若所述评审状态均为同意,且检查状态为成功,则合并所述代码事件,实现了自动合并代码事件的技术效果,提高了代码合并工作的效率,避免了当前开发人员需要时刻关注各pipeline任务的执行结果,以及时合并类型为pull request类型代码事件,导致开发人员工作繁重的问题出现。
实施例二:
本实施例为上述实施例一的一种具体应用场景,通过本实施例,能够更加清楚、具体地阐述本发明所提供的方法。
下面,以在运行有代码托管平台管理方法的服务器中,对所述代码事件进行配置得到任务事件并执行任务事件获得所述任务事件的执行结果,及监听类型为pull request的代码事件的评审状态和检查状态,并合并所述代码事件为例,来对本实施例提供的方法进行具体说明。需要说明的是,本实施例只是示例性的,并不限制本发明实施例所保护的范围。
图2示意性示出了根据本申请实施例二的代码托管平台管理方法的环境应用示意图。
在示例性的实施例中,代码托管平台管理方法所在的服务器2通过网络分别连接代码托管平台3、控制端4和发送端5;所述服务器2可以通过一个或多个网络提供服务,网络可以包括各种网络设备,例如路由器,交换机,多路复用器,集线器,调制解调器,网桥,中继器,防火墙,代理设备和/或等等。网络可以包括物理链路,例如同轴电缆链路,双绞线电缆链路,光纤链路,它们的组合和/或类似物。网络可以包括无线链路,例如蜂窝链路,卫星链路,Wi-Fi链路和/或类似物;所述控制端4和发送端5可为智能手机、平板电脑、笔记本电脑、台式电脑等计算机设备。
图3是本发明一个实施例提供的一种代码托管平台管理方法的具体方法流程图,该方法具体包括步骤S201至S209。
S201:获得runner代码库并安装得到运行模块,及创建数据提取接口。
由于当前的代码托管平台的(如:github或GitHub)的actions是下发任务到该平台制定的云服务上,无法部署到内网的本地机器上,因此执行任务事件均需要在所述云服务上进行,使得本地服务器需要向云服务上传相应的任务事件,并调用云服务中的action方可获得需要的执行结果,导致本地服务器的任务事件执行效率下降,因此,为提高本地服务器对任务事件的执行效率,本步骤通过获得runner代码库(如:runner的源码),并执行runner代码库中的安装脚本,使所述本地服务器安装runner代码库得到运行模块,以实现在本地服务器中执行任务事件的效果,提高了任务事件的执行效率,解决了当下需要调用云服务中的actions。其中,所述runner代码库可为开源版GitHub的Actions的源代码。
需要说明的是,代码托管平台的actions可包括:抓取代码、运行测试、登录远程服务器,发布到第三方服务等操作脚本。
为便于控制端的主面板能够获得任务事件执行情况,本步骤通过创建数据提取结果,以便于主面板提取任务事件执行情况的数据,于本实施例中,可采用Datas API作为所述数据提取接口。
S202:监听代码托管平台是否接收到代码事件。
为保证能够及时获知代码托管平台的代码事件(例如:push、pull request事件),以保证能够及时对该平台的事件进行处理(如:合并、关闭issues),本步骤通过调用代码托管平台的webhook,实时监听GitHub接收到的监听代码托管平台所述项目的事件。
需要说明的是,webhooks是一个api概念,是微服务api的使用范式之一,也被成为反向api,即:前端不主动发送请求,完全由后端推送。WebHook就是一个接收HTTP POST(或GET,PUT,DELETE)的URL。一个实现了WebHook的API提供商就是在当事件发生的时候会向这个配置好的URL发送一条信息,于本实施例中,可将所述URL设置为本地服务器的地址,以实现监听代码托管平台是否接收到代码事件的技术效果。
S203:若所述代码托管平台接收到代码事件,则执行任务进程以根据预设的集成配置信息配置所述代码事件得到任务事件,其中,所述集成配置信息中定义了调度及触发运行模块的方法,以及执行任务事件获得执行结果的方法。
于本实施例中,所述代码事件的类型包括:push和pull request。所述集成配置信息为ci.yml文件,其中,所述ci.yml配置包括:ci-server执行脚本和ci-runner执行脚本;ci-server执行脚本定义了调度及触发运行模块的方法;ci-runner执行脚本定义了执行任务事件获得执行结果的方法(如:测试,编译,打包等)。
示例性地,提取接收到的类型为push、pull request的代码事件所对应的项目,如:ProjectA项目;提取ProjectA项目的ci.yml文件,并根据ci.yml文件配置push、pullrequest等代码事件,获得任务事件,其中,该任务事件至少包括一个pipeline任务,如:所述任务事件包括pipeline任务1和pipeline任务2;所述pipeline任务是根据集成配置信息对代码事件进行配置所生成的任务单元(如:job)。
在一个优选的实施例中,提取所述代码事件所在项目的集成配置信息之前包括:
判断所述代码事件所在项目是否具有集成配置信息;若是,则调用任务进程;若否,则结束任务。
在一个优选的实施例中,所述任务进程包括:
提取所述代码事件所在项目的集成配置信息。
根据所述集成配置信息依次配置代码事件生成pipeline任务,所述pipeline任务的类型包括:push和pull request。
汇总所述pipeline任务得到所述项目的任务事件。
进一步地,若所述项目得到新的类型为pull request的代码事件,则根据所述项目的集成配置信息生成新的pipeline任务,并将其载入所述项目对应的任务事件中。
示例性地,接收到新的pull request的代码事件,如:commit事件,且该代码事件所在项目为ProjectA项目;根据所述集成配置信息对所述新的代码事件进行配置得到pipeline任务3,将pipeline任务3载入到ProjectA项目的任务事件中,使所述任务事件包括pipeline任务1、pipeline任务2和pipeline任务3。
于本实施例中,通过所述任务进程得到任务事件中的pipeline任务的执行状态默认为未执行,即:pending状态。
S204:调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果。
为实现执行任务事件以保证代码的有效性,本步骤通过调用运行模块执行任务库中的任务事件并获得相应的执行结果。为避免重复执行任务库中的任务事件,导致服务器算力浪费,本步骤通过在任务库中的任务事件上添加反映任务事件执行状态的执行标签,所述执行标签包括未执行,已执行和执行中,以确保运行模块仅执行未执行的任务事件。
优选的,所述运行模块可添加任务标签和关联组标签,以实现运行模块与代码托管平台中各项目的多对多关联关系,其中,所述任务标签为所述任务事件中pipeline任务的编号,所述关联组标签为所述项目所在组别的编号。
示例性地,代码托管平台具有h5组的ProjectA项目,并且生成了pipeline任务1和pipeline任务2的任务事件,那么如果需要某一运行模块,如:runner1执行该项目的pipeline任务1和pipeline任务2,则在runner1中添加关联组标签h5,添加任务标签pipeline任务1和pipeline任务2,所述运行模块支持关联多个组和多个标签。
在一个优选的实施例中,请参阅图4,调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果的步骤,包括:
S41:接收控制端发送的标签信息和关联组信息。
S42:将所述标签信息和关联组信息写入所述运行模块的标签上,其中,所述标签可写入至少一个标签信息和关联组信息。
S43:调用运行模块执行任务库中与所述运行模块的任务标签和关联组标签对应,且执行状态为未执行的pipeline任务,并获得所述pipeline任务的执行结果。
S44:汇总所述任务事件中各pipeline任务的执行结果,获得所述任务事件的执行结果。
通过这种方法,实现了多个项目的pipeline任务与多个运行模块runner的多对多绑定,即:一个项目可以对应多个runner,在项目产生多个pipeline任务时,有多个运行模块runner同时执行不同的pipeline任务,提高了并发运行能力;以及一个运行模块runner可以对应多个项目,在项目产生较少的任务事件时,仅运行一个运行模块即可执行所有的pipeline任务,避免了同时启用多个运行模块执行少量的pipeline任务导致本地服务器算力浪费的情况发生。
优选的,所述运行模块的运行状态包括忙碌、空闲、离线。所述pipeline任务的类型包括push和pull request。
在一个优选的实施例中,请参阅图5,调用运行模块执行任务库中与所述运行模块的任务标签和关联组标签对应,且执行状态为未执行的pipeline任务,并获得所述pipeline任务的执行结果的步骤,包括:
S43-1:识别运行状态为空闲的运行模块;
S43-2:调用该运行模块执行所述任务库中与所述运行模块的任务标签和关联组标签对应,且,执行状态为未执行的pipeline任务,并将所述任务库中所述pipeline任务的执行状态修改为执行中;
S43-3:监控所述运行模块执行所述pipeline任务的进度,若所述运行模块执行完成所述pipeline任务,则获得所述pipeline任务的执行结果,并将所述pipeline任务的执行状态修改为已执行。
S43-4:识别所述任务事件中是否具有类型为pull request的pipeline任务;
S43-5:若是,则将所述pipeline任务的执行结果同步到代码托管平台的检查模块;
S43-6:若否,则结束。
示例性地,若所述任务事件中具有类型为pull request的pipeline任务,例如:pipeline任务2,则将pipeline任务2的执行结果同步到github或gitlab的代码托管平台的检查模块(check模块)的check事件上,以便于在代码审查时,审查人员能够看到每次pullrequest的pipeline任务的执行结果。
通过上述方法识别状态为空闲的运行模块执行任务事件,以保证各运行模块不会因负载过大而出现崩溃或死机的情况发生,提高了本地服务器的稳定性。
S205:提取所述运行模块执行任务事件所生成的运行日志,汇总所述任务事件的基本信息、执行结果和运行日志形成事件数据,提取运行模块的运行状态和运行内容获得模块数据,其中,所述任务事件的基本信息包括任务事件的生成时间、提交的信息、CommitSHA、执行状态,所述运行状态反映了所述运行模块当前工作状态,所述运行内容描述了所述运行模块当前执行的任务事件或pipeline任务。
本步骤中,所述运行模块的运行状态包括忙碌、空闲、离线。
需要说明的是,COMMIT命令用于把事务所做的修改保存到数据库,它把上一个COMMIT或ROLLBACK命令之后的全部事务都保存到数据库。每次使用commit命令都会在数据库生成一个40位的哈希值,这个哈希值也叫commit-id,通常的该哈希值是通过SHA算法计算获得的,故,所述Commit SHA为所述commit-id。SHA(Secure Hash Algorithm,译作安全散列算法)是美国国家***(NSA)设计,美国国家标准与技术研究院(NIST)发布的一系列密码散列函数。所述commit SHA在版本回退的时候是非常有用的,它相当于一个快照,可以在未来的任何时候通过与git reset的组合命令回到这里。
S206:接收控制端发送的用户信息,根据所述用户信息获得所述控制端的权限范围,根据所述权限范围向所述控制端发送模块数据和事件数据。
于本实施例中,控制端的主面板可通过所述数据提取接口获取对运行模块(runner)的模块数据,以及任务事件的事件数据。
S207:接收控制端发送的控制信息,根据所述控制信息控制所述运行模块重新执行执行结果为失败或执行超时的任务事件,或取消正在执行的任务事件。
为便于控制端的操作者对运行模块中的任务事件及其pipeline任务进行控制,本步骤通过接收控制端发送的控制信息,根据所述控制信息控制所述运行模块重新执行执行结果为失败或执行超时的任务事件,或取消正在执行的任务事件。
进一步地,所述控制信息包括重新执行信息和取消信息;
根据所述重新执行信息控制控制所述运行模块重新执行执行结果为失败或执行超时的任务事件,根据所述取消信息取消正在执行的任务事件。
其中,所述重新执行信息和取消信息可通过用户在控制端的“重新执行”按键和“取消”按键上点选获得。
S208:监听代码托管平台中类型为pull request的代码事件的评审状态和检查状态;若所述评审状态均为同意,且检查状态为成功,则根据所述执行结果合并所述代码事件。
为避免当前开发人员需要时刻关注各pipeline任务的执行结果,以及时合并类型为pull request类型代码事件,导致开发人员工作繁重的问题出现,本步骤通过监听代码托管平台中类型为pull request的代码事件的评审状态和检查状态;若所述评审状态均为同意,且检查状态为成功,则合并所述代码事件,以实现自动合并pull request类型的代码事件,以提高代码合并工作的效率。
于本实施例中,所述评审状态包括同意和不同意,所述检查状态包括成功和不成功。需要说明的是,代码托管平台的review模块用于对代码事件进行评审,其Check模块用于对代码事件进行检查,因review模块和Check模块均为代码托管平台的常用模块,故在本申请中不再赘述。
进一步地,通过调用代码托管平台的webhook,监听代码托管平台对代码事件进行评审和检查所生成的结果消息,该结果消息包括所述代码事件的事件编码,以及该代码事件的评审状态和检查状态。
提取所述评审状态和检查状态,若所述评审状态均为同意,且检查状态为成功,则提取与事件编码对应的任务事件,并获取该任务事件的执行结果。
在一个优选的实施例中,请参阅图6,根据所述执行结果合并所述代码事件的步骤,包括:
S81:汇总属于同一项目的代码事件形成事件集合;
S82:判断所述事件集合中各代码事件执行结果是否均为通过;
S83:若均为通过,则调用代码托管平台中的合并模块合并所述事件集合中的代码事件,得到目标代码事件并将其发送至所述代码托管平台。
S84:若至少有一个执行结果为未通过,则向控制端和代码托管平台返回拒绝合并信息。
于本实施例中,由于对同一项目的代码事件进行了汇总,因此避免了其他项目的代码事件混入本项目的事件集合,保证了获得目标代码事件的准确度;
所述合并模块为代码托管平台的merge模块,其用于对类型为pull request的代码事件进行合并,因merge模块为现有技术,本申请所要解决的技术问题是如何实现自动合并代码事件,因此merge模块合并代码事件的具体技术原理在本申请中不做赘述。
优选的,根据所述执行结果合并所述代码事件之后,还包括:
将所述合并的代码事件上传至区块链中。
需要说明的是,基于合并的代码事件得到对应的摘要信息,具体来说,摘要信息由合并的代码事件进行散列处理得到,比如利用sha256s算法处理得到。将摘要信息上传至区块链可保证其安全性和对用户的公正透明性。用户设备可以从区块链中下载得该摘要信息,以便查证合并的代码事件是否被篡改。本示例所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
S209:从代码托管平台中获取事务信息并识别与所述事务信息对应的项目,提取所述项目的集成配置信息;监听代码托管平台根据所述事务信息生成的变更信息,提取所述集成配置信息中预设的关闭规则,并判断所述变更信息是否符合所述关闭规则;若符合,则关闭所述事务信息;若不符合,则向控制端和代码托管平台返回拒绝关闭信息。
为避免大量的可关闭的事务信息在代码托管平台中展示,导致代码事件展示混乱,使开发人员不得不重复执行关闭,本步骤通过从代码托管平台中获取事务信息并识别与所述事务信息对应的项目,提取所述项目的集成配置信息;监听代码托管平台根据所述事务信息生成的变更信息,提取所述集成配置信息中的关闭规则,并判断所述变更信息是否符合所述关闭规则;若符合,则关闭所述事务信息。同时,本步骤还可因在集成配置信息中增加了关闭规则,使得关闭事务信息的操作更加符合代码托管平台的实际需求。
所述关闭规则可为对变更信息的发送端的审查,若所述发送端为关闭规则中预设的白名单中的用户,则判定该变更信息为有权,因此符合关闭规则。
于所述图3中,所述S209以以下标注展现:
S209-1:从代码托管平台中获取事务信息并识别与所述事务信息对应的项目,提取所述项目的集成配置信息;
S209-2:监听代码托管平台根据所述事务信息生成的变更信息;
S209-3:提取所述集成配置信息中预设的关闭规则,并判断所述变更信息是否符合所述关闭规则;
S209-4:若符合,则关闭所述事务信息;
S209-5:若不符合,则向控制端和代码托管平台返回拒绝关闭信息。
实施例三:
请参阅图7,本实施例的一种代码托管平台管理装置1,包括:
事件监听模块12,用于监听代码托管平台是否接收到代码事件;
事件配置模块13,用于在所述代码托管平台接收到代码事件时,执行任务进程以根据预设的集成配置信息配置所述代码事件得到任务事件,其中,所述集成配置信息中定义了调度及触发预设的运行模块的方法,以及执行任务事件获得执行结果的方法;
事件执行模块14,用于调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果;
监听合并模块18,用于监听代码托管平台中类型为pull request的代码事件的评审状态和检查状态;若所述评审状态均为同意,且检查状态为成功,则根据所述执行结果合并所述代码事件。
可选的,所述代码托管平台管理装置1还包括:
安装管理模块11,用于获得runner代码库并安装得到运行模块,及创建数据提取接口。
可选的,所述代码托管平台管理装置1还包括:
日志管理模块15,用于提取所述运行模块执行任务事件所生成的运行日志,汇总所述任务事件的基本信息、执行结果和运行日志形成事件数据,提取运行模块的运行状态和运行内容获得模块数据,其中,所述任务事件的基本信息包括任务事件的生成时间、提交的信息、Commit SHA、执行状态,所述运行状态反映了所述运行模块当前工作状态,所述运行内容描述了所述运行模块当前执行的任务事件或pipeline任务。
可选的,所述代码托管平台管理装置1还包括:
权限管理模块16,用于接收控制端发送的用户信息,根据所述用户信息获得所述控制端的权限范围,根据所述权限范围向所述控制端发送模块数据和事件数据。
可选的,所述代码托管平台管理装置1还包括:
事件控制模块17,用于接收控制端发送的控制信息,根据所述控制信息控制所述运行模块重新执行执行结果为失败或执行超时的任务事件,或取消正在执行的任务事件。
可选的,所述代码托管平台管理装置1还包括:
事务关闭模块19,用于从代码托管平台中获取事务信息并识别与所述事务信息对应的项目,提取所述项目的集成配置信息;监听代码托管平台根据所述事务信息生成的变更信息,提取所述集成配置信息中预设的关闭规则,并判断所述变更信息是否符合所述关闭规则;若符合,则关闭所述事务信息;若不符合,则向控制端和代码托管平台返回拒绝关闭信息。
本技术方案应用于研发管理的开发领域,通过构建监听代码托管平台是否接收到代码事件,并执行任务进程以根据预设的集成配置信息配置代码事件得到任务事件,及调用运行模块执行任务库中执行状态为未执行的任务事件获得的执行结果,以及监听代码托管平台中类型为pull request的代码事件的评审状态和检查状态并合并代码事件的代码质量工具,以对开发人员进行开发辅助。
实施例四:
为实现上述目的,本发明还提供一种计算机设备6,实施例三的代码托管平台管理装置1的组成部分可分散于不同的计算机设备中,计算机设备6可以是执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个应用服务器所组成的服务器集群)等。本实施例的计算机设备至少包括但不限于:可通过***总线相互通信连接的存储器61、处理器62,如图8所示。需要指出的是,图8仅示出了具有组件-的计算机设备,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
本实施例中,存储器61(即存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器61可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,存储器61也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器61还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,存储器61通常用于存储安装于计算机设备的操作***和各类应用软件,例如实施例三的代码托管平台管理装置的程序代码等。此外,存储器61还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器62在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器62通常用于控制计算机设备的总体操作。本实施例中,处理器62用于运行存储器61中存储的程序代码或者处理数据,例如运行代码托管平台管理装置,以实现实施例一和实施例二的代码托管平台管理方法。
实施例五:
为实现上述目的,本发明还提供一种计算机存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机程序,程序被处理器62执行时实现相应功能。本实施例的计算机存储介质用于存储代码托管平台管理装置,被处理器62执行时实现实施例一和实施例二的代码托管平台管理方法。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种代码托管平台管理方法,其特征在于,包括:
监听代码托管平台是否接收到代码事件;
若所述代码托管平台接收到代码事件,则执行任务进程以根据预设的集成配置信息配置所述代码事件得到任务事件,其中,所述集成配置信息中定义了调度及触发预设的运行模块的方法,以及执行任务事件获得执行结果的方法;
调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果;
监听代码托管平台中类型为pull request的代码事件的评审状态和检查状态;若所述评审状态均为同意,且检查状态为成功,则根据所述执行结果合并所述代码事件。
2.根据权利要求1所述的代码托管平台管理方法,其特征在于,调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果的步骤,包括:
接收控制端发送的标签信息和关联组信息;
将所述标签信息和关联组信息写入运行模块的标签上,其中,所述标签可写入至少一个标签信息和关联组信息;
调用运行模块执行任务库中与所述运行模块的任务标签和关联组标签对应,且执行状态为未执行的pipeline任务,并获得所述pipeline任务的执行结果;
汇总所述任务事件中各pipeline任务的执行结果,获得所述任务事件的执行结果。
3.根据权利要求2所述的代码托管平台管理方法,其特征在于,调用运行模块执行任务库中与所述运行模块的任务标签和关联组标签对应,且执行状态为未执行的pipeline任务,并获得所述pipeline任务的执行结果的步骤,包括:
识别运行状态为空闲的运行模块;
调用该运行模块执行所述任务库中与所述运行模块的任务标签和关联组标签对应,且,执行状态为未执行的pipeline任务,并将所述任务库中所述pipeline任务的执行状态修改为执行中;
监控所述运行模块执行所述pipeline任务的进度,若所述运行模块执行完成所述pipeline任务,则获得所述pipeline任务的执行结果,并将所述pipeline任务的执行状态修改为已执行;
识别所述任务事件中是否具有类型为pull request的pipeline任务;若是,则将所述pipeline任务的执行结果同步到代码托管平台的检查模块。
4.根据权利要求1所述的代码托管平台管理方法,其特征在于,调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果之后,包括:
提取所述运行模块执行任务事件所生成的运行日志,汇总所述任务事件的基本信息、执行结果和运行日志形成事件数据,提取运行模块的运行状态和运行内容获得模块数据,其中,所述任务事件的基本信息包括任务事件的生成时间、提交的信息、Commit SHA、执行状态,所述运行状态反映了所述运行模块当前工作状态,所述运行内容描述了所述运行模块当前执行的任务事件或pipeline任务。
5.根据权利要求1所述的代码托管平台管理方法,其特征在于,调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果之后,包括:
接收控制端发送的控制信息,根据所述控制信息控制所述运行模块重新执行执行结果为失败或执行超时的任务事件,或取消正在执行的任务事件。
6.根据权利要求1所述的代码托管平台管理方法,其特征在于,根据所述执行结果合并所述代码事件的步骤,包括:
汇总属于同一项目的代码事件形成事件集合;
判断所述事件集合中各代码事件执行结果是否均为通过;
若均为通过,则调用代码托管平台中的合并模块合并所述事件集合中的代码事件,得到目标代码事件并将其发送至所述代码托管平台;
若至少有一个执行结果为未通过,则向控制端和代码托管平台返回拒绝合并信息。
7.根据权利要求1所述的代码托管平台管理方法,其特征在于,根据所述执行结果合并所述代码事件之后,包括:
从代码托管平台中获取事务信息并识别与所述事务信息对应的项目,提取所述项目的集成配置信息;监听代码托管平台根据所述事务信息生成的变更信息,提取所述集成配置信息中预设的关闭规则,并判断所述变更信息是否符合所述关闭规则;若符合,则关闭所述事务信息;若不符合,则向控制端和代码托管平台返回拒绝关闭信息;
根据所述执行结果合并所述代码事件之后,还包括:
将所述合并的代码事件上传至区块链中。
8.一种代码托管平台管理装置,其特征在于,包括:
事件监听模块,用于监听代码托管平台是否接收到代码事件;
事件配置模块,用于在所述代码托管平台接收到代码事件时,执行任务进程以根据预设的集成配置信息配置所述代码事件得到任务事件,其中,所述集成配置信息中定义了调度及触发预设的运行模块的方法,以及执行任务事件获得执行结果的方法;
事件执行模块,用于调用运行模块执行任务库中执行状态为未执行的任务事件,并获得所述任务事件的执行结果;
监听合并模块,用于监听代码托管平台中类型为pull request的代码事件的评审状态和检查状态;若所述评审状态均为同意,且检查状态为成功,则根据所述执行结果合并所述代码事件。
9.一种计算机设备,其包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述计算机设备的处理器执行所述计算机程序时实现权利要求1至7任一项所述代码托管平台管理方法的步骤。
10.一种计算机存储介质,所述存储介质上存储有计算机程序,其特征在于,所述存储介质存储的所述计算机程序被处理器执行时实现权利要求1至7任一项所述代码托管平台管理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010964414.1A CN112099843A (zh) | 2020-09-15 | 2020-09-15 | 代码托管平台管理方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010964414.1A CN112099843A (zh) | 2020-09-15 | 2020-09-15 | 代码托管平台管理方法、装置、计算机设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112099843A true CN112099843A (zh) | 2020-12-18 |
Family
ID=73751883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010964414.1A Pending CN112099843A (zh) | 2020-09-15 | 2020-09-15 | 代码托管平台管理方法、装置、计算机设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112099843A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204369A (zh) * | 2021-04-28 | 2021-08-03 | 安徽智侒信信息技术有限公司 | 一种GitLab代码仓库活动智能监控工具 |
CN113778507A (zh) * | 2021-07-26 | 2021-12-10 | 北京芬香科技有限公司 | 一种托管式上线方法和*** |
CN115543432A (zh) * | 2022-11-28 | 2022-12-30 | 北京创新乐知网络技术有限公司 | 一种通用型Git代码托管平台***及实现方法 |
CN117112184A (zh) * | 2023-10-23 | 2023-11-24 | 深圳市魔数智擎人工智能有限公司 | 一种基于容器技术的任务调度服务方法及*** |
WO2024016690A1 (zh) * | 2022-07-22 | 2024-01-25 | 华为云计算技术有限公司 | 消息发送方法、代码显示方法、装置及相关设备 |
-
2020
- 2020-09-15 CN CN202010964414.1A patent/CN112099843A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113204369A (zh) * | 2021-04-28 | 2021-08-03 | 安徽智侒信信息技术有限公司 | 一种GitLab代码仓库活动智能监控工具 |
CN113778507A (zh) * | 2021-07-26 | 2021-12-10 | 北京芬香科技有限公司 | 一种托管式上线方法和*** |
CN113778507B (zh) * | 2021-07-26 | 2024-02-20 | 北京芬香科技有限公司 | 一种托管式上线方法和*** |
WO2024016690A1 (zh) * | 2022-07-22 | 2024-01-25 | 华为云计算技术有限公司 | 消息发送方法、代码显示方法、装置及相关设备 |
CN115543432A (zh) * | 2022-11-28 | 2022-12-30 | 北京创新乐知网络技术有限公司 | 一种通用型Git代码托管平台***及实现方法 |
CN115543432B (zh) * | 2022-11-28 | 2023-03-10 | 北京创新乐知网络技术有限公司 | 一种通用型Git代码托管平台***及实现方法 |
CN117112184A (zh) * | 2023-10-23 | 2023-11-24 | 深圳市魔数智擎人工智能有限公司 | 一种基于容器技术的任务调度服务方法及*** |
CN117112184B (zh) * | 2023-10-23 | 2024-02-02 | 深圳市魔数智擎人工智能有限公司 | 一种基于容器技术的任务调度服务方法及*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112099843A (zh) | 代码托管平台管理方法、装置、计算机设备及存储介质 | |
CN108600029B (zh) | 一种配置文件更新方法、装置、终端设备及存储介质 | |
CN106156186B (zh) | 一种数据模型管理装置、服务器及数据处理方法 | |
US9092230B2 (en) | Configuration of componentized software applications | |
CN108932189B (zh) | 保存服务器日志的方法和装置 | |
CN112463144B (zh) | 分布式存储的命令行服务方法、***、终端及存储介质 | |
CN111695156A (zh) | 业务平台的访问方法、装置、设备及存储介质 | |
CN112527484B (zh) | 工作流断点续跑方法、装置、计算机设备及可读存储介质 | |
CN111563016B (zh) | 日志采集分析方法、装置、计算机***及可读存储介质 | |
CN113254445B (zh) | 实时数据存储方法、装置、计算机设备及存储介质 | |
CN111949531B (zh) | 区块链网络的测试方法、装置、介质及电子设备 | |
CN110851471A (zh) | 分布式日志数据处理方法、装置以及*** | |
CN112306805A (zh) | 防重复点击的方法、装置、计算机设备及可读存储介质 | |
CN112860645A (zh) | 一种离线压缩文件的处理方法、装置、计算机设备及介质 | |
CN113254320A (zh) | 记录用户网页操作行为的方法及装置 | |
CN111782456A (zh) | 异常检测方法、装置、计算机设备和存储介质 | |
CN112052141B (zh) | 数据分片校验方法、装置、计算机设备及可读存储介质 | |
CN112445860B (zh) | 一种处理分布式事务的方法和装置 | |
CN116599881A (zh) | 云平台租户建模测试的方法、装置、设备及存储介质 | |
CN113434217B (zh) | 漏洞扫描方法、装置、计算机设备及介质 | |
CN111752600B (zh) | 代码异常检测方法、装置、计算机设备及存储介质 | |
CN111722946A (zh) | 分布式事务处理方法、装置、计算机设备及可读存储介质 | |
EP2601627B1 (en) | Transaction processing system and method | |
CN112241332A (zh) | 一种接口补偿的方法和装置 | |
CN112269583B (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 |