一种识别配方文件并转化为XML文件的方法及系统技术方案

技术编号:22308424 阅读:23 留言:0更新日期:2019-10-16 08:31
本发明专利技术公开了一种识别配方文件并转化为XML文件的方法及系统,属于计算机应用技术领域,方法包括:对克隆到本地仓库中的所有配方文件的文件类型进行识别,判断其为YAML类型文件还是BB类型文件;根据识别的结果,调用相应的预设脚本以执行如下操作:对所有配方文件进行解析,生成包含所有源代码仓库的信息的JSON文件;对JSON文件进行解析,提取出各源代码仓库的链接、索引及存储路径;将提取到的各源代码仓库的链接、索引及存储路径按键值对写入对应的字典中;从所有字典中识别出各源代码仓库的链接、索引及存储路径,并写入Manifest仓库的XML文件中。本发明专利技术实施例提供的技术方案能够便于用户读取源代码仓库的相关信息,并可以实现对源代码仓库进行批量操作。

A method and system of recognizing recipe file and transforming it into XML file

【技术实现步骤摘要】
一种识别配方文件并转化为XML文件的方法及系统
本专利技术涉及计算机应用
,特别涉及一种识别配方文件并转化为XML文件的方法及系统。
技术介绍
在互联网的软件开发与发布过程中,持续集成是一个重要的过程,持续集成是指持续性地将代码集成到主干分支,继而实现持续性构建与自动化测试。这样快速的迭代可以快速的发现并解决bug,保证代码的质量。在软件开发过程中,源代码的管理是一个极其重要的环节。一个项目的源代码往往是随着开发进度在持续变化的,为了保留代码的所有修订版本,用户可以采取复制整个项目的目录并改名加上备注时间等依次保留项目的所有修订版本,但这无疑是不严谨的,且无法真正做到版本控制,比如在存储过程中一不小心写错了文件名,或是覆盖了其他已存在的文件版本,这将会导致以前版本的丢失,甚至对整个项目都造成致命的影响。于是版本控制的概念应运而生,版本控制系统记录了所有文件每次变更的差异,保证可以准确的回溯到之前的任意一个版本。Git作为分布式版本控制系统已成为当代源代码管理的主流,因其分布式的特性使得每一次克隆操作都是对代码仓库的完成备份,即便服务器发生故障,也可以使用客户端代码最大限度的恢复服务器仓库。在软件持续集成过程中,源代码仓库的配置与管理可以采用多种形式,当前比较流行的主要有三种:第一种是使用YAML文件的Recipe仓库,主要使用Bob工具进行源代码的检出及构建;第二种是使用BB类型文件的Yocto仓库,主要使用Bitbake工具进行源代码的检出与构建;第三种是使用XML类型文件的Manifest仓库,主要使用Repo工具进行源代码的管理。其中Recipe仓库与Yocto仓库均可以理解为一个食谱,该食谱中包含各种食物的做法,即,软件项目中的各个模块的构建方法。YAML类型文件和BB类型文件都可以称为配方文件,一个配方文件即对应软件项目中一个最小构建单元模块,最小构建单元模块是构成一个功能模块的基本单元,为了更好的组织目录结构,属于同一个功能模块的配方文件通常放置在该功能模块的子目录中。配方文件主要包含三个部分:源代码检出、编译方法和打包方法;其中源代码检出部分包含该模块所使用的Git仓库的基本信息,包括该仓库的链接以及分支等。对于Recipe仓库来说,所有的配方文件都存放在recipes/目录中,且均为YAML类型文件,Bob工具依据recipes/目录内的YAML文件来实现整个项目的自动构建框架。而对于Yocto仓库来说,所有的配方文件都存放在Metadata元数据集中的以recipes-开头的相应模块的目录中,且均为BB类型的配方文件,Bitbake工具则是依据配方文件来实现项目构建的。而Manifest仓库主要应用于Android源码管理,由于Android源代码工程是一个大型的开源工程,通常所用的Git源代码版本管理工具已经不能满足需求,于是Repo工具应运而生,Repo对Git进行了封装,可以对整个Android工程的所有源代码仓库进行批量操作。Manifest仓库使用一个XML文件存放Android项目所有子项目的Git仓库元信息,Repo工具则通过这个Manifest仓库实现对所有源代码的管理与操作。XML是一种可扩展元标记语言,开发者可以根据自身需要定义自己的标记。而YAML是一种以数据为中心的语言。YAML更简单,且可读性高,易于实现。故实际应用中YAML更主流一些。而BB文件则是Yocto项目中使用的专有配方文件。但是在持续集成领域的源代码管理过程中,往往有时用户只想提取项目中源代码的相关信息,而无论源代码仓库是使用Recipe仓库的形式还是使用Yocto仓库的形式,用户都必须依次读取各个配方文件才能获取到所有源代码仓库的信息,非常耗时且繁琐,并且也无法同时对这些源代码仓库进行批量操作。
技术实现思路
针对上述现有技术中存在的问题,本专利技术提供了一种识别配方文件并转化为XML文件的方法及系统。本专利技术实施例提供的技术方案具体如下:第一方面,提供了一种识别配方文件并转化为XML文件的方法,所述方法包括:对克隆到本地仓库中的所有配方文件的文件类型进行识别,判断其为YAML类型文件还是BB类型文件;根据所述识别的结果,调用相应的预设脚本以执行如下操作:对所有所述配方文件进行解析,生成包含所有源代码仓库的信息的JSON文件;对所述JSON文件进行解析,提取出各所述源代码仓库的链接、索引及存储路径;将提取到的各所述源代码仓库的链接、索引及存储路径按键值对写入对应的字典中;从所有所述字典中识别出各所述源代码仓库的链接、索引及存储路径,并写入Manifest仓库的XML文件中。进一步地,所述预设脚本为Python脚本或Shell脚本。进一步地,所述源代码仓库的索引为仓库分支名、仓库commit号和仓库tag号中的任意一个。进一步地,所述字典中包含第一键值对和第二键值对,所述将提取到的各所述源代码仓库的链接、索引及存储路径按键值对写入对应的字典中,包括:根据各所述源代码仓库的索引对所有所述源代码仓库进行分类,得到各所述源代码仓库的类别值;以各所述源代码仓库的类别值作为所述第一键值对的键,以所述第二键值对作为所述第一键值对的值;其中,所述第二键值对的键为各所述源代码仓库的链接,所述第二键值对的值为各所述源代码仓库的链接对应的索引以及存储路径。进一步地,所述从所有所述字典中识别出各所述源代码仓库的链接、索引及存储路径,并写入Manifest仓库的XML文件中,包括:在本地创建所述XML文件;根据所述字典中的键值对,识别出各所述源代码仓库的链接、索引及存储路径;将各所述源代码仓库的链接、索引及存储路径分别作为属性值写入所述XML文件中;将所述XML文件上传至所述Manifest仓库中。第二方面,提供了一种识别配方文件并转化为XML文件的系统,所述系统包括:类型识别模块,用于对克隆到本地仓库中的所有配方文件的文件类型进行识别,判断其为YAML类型文件还是BB类型文件;脚本调用模块,用于根据所述识别的结果,调用相应的预设脚本对所有所述配方文件进行处理;脚本运行模块,用于运行所述预设脚本以执行如下操作:对所有所述配方文件进行解析,生成包含所有源代码仓库的信息的JSON文件;对所述JSON文件进行解析,提取出各所述源代码仓库的链接、索引及存储路径;将提取到的各所述源代码仓库的链接、索引及存储路径按键值对写入对应的字典中;从所有所述字典中识别出各所述源代码仓库的链接、索引及存储路径,并写入Manifest仓库的XML文件中。进一步地,所述预设脚本为Python脚本或Shell脚本。进一步地,所述源代码仓库的索引为仓库分支名、仓库commit号和仓库tag号中的任意一个。进一步地,所述字典中包含第一键值对和第二键值对,所述脚本运行模块具体用于:运行所述预设脚本以执行如下操作:根据各所述源代码仓库的索引对所有所述源代码仓库进行分类,得到各所述源代码仓库的类别值;以各所述源代码仓库的类别值作为所述第一键值对的键,以所述第二键值对作为所述第一键值对的值;其中,所述第二键值对的键为各所述源代码仓库的链接,所述第二键值对的值为各所述源代码仓库的链接对应的索引以及存储路径。进一步地,所述脚本运行模块具体还用于:运行所述预设本文档来自技高网
...

【技术保护点】
1.一种识别配方文件并转化为XML文件的方法,其特征在于,包括:对克隆到本地仓库中的所有配方文件的文件类型进行识别,判断其为YAML类型文件还是BB类型文件;根据所述识别的结果,调用相应的预设脚本以执行如下操作:对所有所述配方文件进行解析,生成包含所有源代码仓库的信息的JSON文件;对所述JSON文件进行解析,提取出各所述源代码仓库的链接、索引及存储路径;将提取到的各所述源代码仓库的链接、索引及存储路径按键值对写入对应的字典中;从所有所述字典中识别出各所述源代码仓库的链接、索引及存储路径,并写入Manifest仓库的XML文件中。

【技术特征摘要】
1.一种识别配方文件并转化为XML文件的方法,其特征在于,包括:对克隆到本地仓库中的所有配方文件的文件类型进行识别,判断其为YAML类型文件还是BB类型文件;根据所述识别的结果,调用相应的预设脚本以执行如下操作:对所有所述配方文件进行解析,生成包含所有源代码仓库的信息的JSON文件;对所述JSON文件进行解析,提取出各所述源代码仓库的链接、索引及存储路径;将提取到的各所述源代码仓库的链接、索引及存储路径按键值对写入对应的字典中;从所有所述字典中识别出各所述源代码仓库的链接、索引及存储路径,并写入Manifest仓库的XML文件中。2.根据权利要求1所述的方法,其特征在于,所述预设脚本为Python脚本或Shell脚本。3.根据权利要求1所述的方法,其特征在于,所述源代码仓库的索引为仓库分支名、仓库commit号和仓库tag号中的任意一个。4.根据权利要求1至3任意一项所述的方法,其特征在于,所述字典中包含第一键值对和第二键值对,所述将提取到的各所述源代码仓库的链接、索引及存储路径按键值对写入对应的字典中,包括:根据各所述源代码仓库的索引对所有所述源代码仓库进行分类,得到各所述源代码仓库的类别值;以各所述源代码仓库的类别值作为所述第一键值对的键,以所述第二键值对作为所述第一键值对的值;其中,所述第二键值对的键为各所述源代码仓库的链接,所述第二键值对的值为各所述源代码仓库的链接对应的索引以及存储路径。5.根据权利要求1所述的方法,其特征在于,所述从所有所述字典中识别出各所述源代码仓库的链接、索引及存储路径,并写入Manifest仓库的XML文件中,包括:在本地创建所述XML文件;根据所有所述字典中的键值对,识别出各所述源代码仓库的链接、索引及存储路径;将各所述源代码仓库的链接、索引及存储路径分别作为属性值写入所述XML文件中,并将所述XML文件上传至所述Manifest仓库中。6.一种识...

【专利技术属性】
技术研发人员:蓝菲菲
申请(专利权)人:宁波均胜普瑞智能车联有限公司
类型:发明
国别省市:浙江,33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1