System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
本专利技术涉及软件开发,具体涉及一种软件的持续集成方法与系统、计算机可读存储介质。
技术介绍
1、随着自动驾驶行业的快速迭代更新,各算法的静态代码测试、动态代码测试、单元测试、集成测试等工作任务不断增加,特别是核心算法,如感知、定位、决策规划等的逻辑关系处理复杂,通常编译时间较长,如果一直依赖人工进行集成测试,人力成本大,等待时间长,且对测试无实质性的帮助,无法保证集成效率与质量;
2、除了集成编译耗费时间过长以外,当前集成方法还存在以下问题:将算法代码提交源代码仓库后直接集成编译,并未进行代码编译查错;将算法代码提交源代码仓库后进行单一算法编译,并未与其他上下游关联算法进行合并冲突检测;将时间花费在单模块测试,未进行整体集成测试;未统一测试环境或者编译环境;
3、因此,当前自动驾驶软件算法的集成方法亟待改进。
技术实现思路
1、本专利技术的目的在于提出一种软件的持续集成方法与系统、计算机可读存储介质,以解决当前自动驾驶算法集成编译耗费时间过长,未进行代码编译查错,未与其他上下游关联算法进行合并冲突检测,未进行整体集成测试等问题。
2、为实现上述目的,本专利技术提出一种软件的持续集成方法,所述方法包括:
3、jenkins服务器实时监测代码集成管理系统的源代码仓库是否有源代码提交;
4、当监测到所述代码集成管理系统的源代码仓库有源代码提交时,jenkins服务器确定目标源代码仓库,根据所述目标源代码仓库中的目标源代码的关键
5、jenkins服务器调用与所述代码校验类型匹配的预设脚本,并运行该预设脚本对所述目标源代码进行代码校验,并返回代码校验结果至所述代码集成管理系统;其中,当所述代码校验类型为脚本检查时,对所述目标源代码进行语法检查;当所述代码校验类型为算法测试时,对所述目标源代码进行静态代码检查、算法编译、动态代码检查和单元测试;当所述代码校验类型为集成测试时,对所述目标源代码进行集成编译和离线仿真测试。
6、优选地,所述方法还包括:
7、jenkins服务器根据所述代码校验结果判定所述目标源代码是否允许合并;若所述代码校验结果为校验通过,则判定所述目标源代码允许合并,并通知预设的审核方对所述目标源代码进行仓库合并,若所述代码校验结果为校验不通过,则判定所述目标源代码不允许合并。
8、优选地,所述当所述代码校验类型为算法测试时,对所述目标源代码进行静态代码检查、算法编译、动态代码检查和单元测试,包括:
9、根据所述目标源代码仓库对jenkins服务器的算法代码放置区进行更新;
10、依次对所述目标源代码进行静态代码检查、算法编译、动态代码检查和单元测试;
11、当所述目标源代码的静态代码检查、算法编译、动态代码检查和单元测试中任一个不通过时,结束代码校验,输出代码校验结果为校验不通过;
12、当所述目标源代码的静态代码检查、算法编译、动态代码检查和单元测试均通过时,输出代码校验结果为校验通过,并对所述目标源代码对应的代码集成管理系统的源代码仓库添加表示通过模块算法测试的标签tag1。
13、优选地,所述当所述代码校验类型为集成测试时,对所述目标源代码进行集成编译和离线仿真测试,包括:
14、根据所述代码集成管理系统的源代码仓库对jenkins服务器的集成代码放置区进行更新;其中,所述集成代码放置区包括多个代码仓库,该多个代码仓库分别用于放置用于集成的不同模块算法的源代码;
15、判断所述集成代码放置区中与所述目标源代码对应的代码仓库是否包含标签tag1,若否,则调用与该代码仓库匹配的预设脚本对所述目标源代码进行算法测试,并在算法测试成功后对所述集成代码放置区中与所述目标源代码对应的代码仓库打上标签tag1,若有,则继续判断所述集成代码放置区各代码仓库是否均含有表示预编译通过的标签tag2;
16、若所述集成代码放置区各代码仓库均含有表示预编译通过的标签tag2,则进行集成编译,若所述集成代码放置区其余各代码仓库存在一个或多个代码仓库不含有表示预编译通过的标签tag2,则调用与该一个或多个代码仓库匹配的预设脚本对该一个或多个代码仓库的源代码进行预编译,并在预编译成功后对该一个或多个代码仓库打上标签tag2。
17、优选地,所述当所述代码校验类型为集成测试时,对所述目标源代码进行集成编译和离线仿真测试,包括:
18、进行集成编译时,若集成编译成功,则输出代码校验结果为校验通过,并输出实车测试可执行文件与离线仿真测试可执行文件,若集成编译失败,则输出代码校验结果为校验不通过;
19、其中,所述实车测试可执行文件用于实车测试,所述离线仿真测试可执行文件用于离线仿真测试。
20、优选地,所述jenkins服务器部署有docker镜像;
21、所述当所述代码校验类型为集成测试时,对所述目标源代码进行集成编译和离线仿真测试,包括:
22、基于docker镜像运行所述离线仿真测试可执行文件以进行离线仿测试。
23、本专利技术还提出一种软件的持续集成系统,包括jenkins服务器和代码集成管理系统,所述代码集成管理系统包括多个源代码仓库,该多个源代码仓库分别用于放置用于不同模块算法的源代码;
24、所述jenkins服务器用于实时监测代码集成管理系统的源代码仓库是否有源代码提交,当监测到所述代码集成管理系统的源代码仓库有源代码提交时,jenkins服务器确定目标源代码仓库,根据所述目标源代码仓库中的目标源代码的关键字确定代码校验类型;
25、所述jenkins服务器还用于调用与所述代码校验类型匹配的预设脚本,并运行该预设脚本对所述目标源代码进行代码校验,并返回代码校验结果至所述代码集成管理系统;其中,当所述代码校验类型为脚本检查时,对所述目标源代码进行语法检查;当所述代码校验类型为算法测试时,对所述目标源代码进行静态代码检查、算法编译、动态代码检查和单元测试;当所述代码校验类型为集成测试时,对所述目标源代码进行集成编译和离线仿真测试。
26、优选地,所述jenkins服务器还用于根据所述代码校验结果判定所述目标源代码是否允许合并;若所述代码校验结果为校验通过,则判定所述目标源代码允许合并,并通知预设的审核方对所述目标源代码进行仓库合并,若所述代码校验结果为校验不通过,则判定所述目标源代码不允许合并。
27、优选地,所述jenkins服务器部署有docker镜像;
28、所述jenkins服务器还用于当集成编译成功,则输出实车测试可执行文件与离线仿真测试可执行文件;所述实车测试可执行文件用于实车测试,所述离线仿真测试可执行文件用于基于docker镜像运行以进行离线仿测试。
29、本专利技术还提出一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时完本文档来自技高网...
【技术保护点】
1.一种软件的持续集成方法,其特征在于,所述方法包括:
2.根据权利要求1所述的软件的持续集成方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的软件的持续集成方法,其特征在于,所述当所述代码校验类型为算法测试时,对所述目标源代码进行静态代码检查、算法编译、动态代码检查和单元测试,包括:
4.根据权利要求3所述的软件的持续集成方法,其特征在于,所述当所述代码校验类型为集成测试时,对所述目标源代码进行集成编译和离线仿真测试,包括:
5.根据权利要求4所述的软件的持续集成方法,其特征在于,所述当所述代码校验类型为集成测试时,对所述目标源代码进行集成编译和离线仿真测试,包括:
6.根据权利要求5所述的软件的持续集成方法,其特征在于,所述Jenkins服务器部署有docker镜像;
7.一种软件的持续集成系统,其特征在于,包括Jenkins服务器和代码集成管理系统,所述代码集成管理系统包括多个源代码仓库,该多个源代码仓库分别用于放置用于不同模块算法的源代码;
8.根据权利要求7所述的软件的持续集成
9.根据权利要求7所述的软件的持续集成系统,其特征在于,所述Jenkins服务器部署有docker镜像;
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时完成如权利要求1-6中任一项所述的软件的持续集成方法。
...【技术特征摘要】
1.一种软件的持续集成方法,其特征在于,所述方法包括:
2.根据权利要求1所述的软件的持续集成方法,其特征在于,所述方法还包括:
3.根据权利要求1所述的软件的持续集成方法,其特征在于,所述当所述代码校验类型为算法测试时,对所述目标源代码进行静态代码检查、算法编译、动态代码检查和单元测试,包括:
4.根据权利要求3所述的软件的持续集成方法,其特征在于,所述当所述代码校验类型为集成测试时,对所述目标源代码进行集成编译和离线仿真测试,包括:
5.根据权利要求4所述的软件的持续集成方法,其特征在于,所述当所述代码校验类型为集成测试时,对所述目标源代码进行集成编译和离线仿真测试,包括:
6.根据权利要求5所述的软件的持续集成方法,其特征在于,所述jenkins服务器部署有docker镜像;
7.一种...
【专利技术属性】
技术研发人员:邓蓉,汪广,杨倩文,
申请(专利权)人:广州汽车集团股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。