CN117331539A - 一种持续集成的方法、装置、电子设备及可读存储介质 - Google Patents

一种持续集成的方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN117331539A
CN117331539A CN202311387396.5A CN202311387396A CN117331539A CN 117331539 A CN117331539 A CN 117331539A CN 202311387396 A CN202311387396 A CN 202311387396A CN 117331539 A CN117331539 A CN 117331539A
Authority
CN
China
Prior art keywords
source code
code set
software
description file
version number
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
Application number
CN202311387396.5A
Other languages
English (en)
Inventor
张彪
王进
彭江
王来
黄大飞
刘小飞
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chongqing Seres New Energy Automobile Design Institute Co Ltd
Original Assignee
Chongqing Seres New Energy Automobile Design Institute Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chongqing Seres New Energy Automobile Design Institute Co Ltd filed Critical Chongqing Seres New Energy Automobile Design Institute Co Ltd
Priority to CN202311387396.5A priority Critical patent/CN117331539A/zh
Publication of CN117331539A publication Critical patent/CN117331539A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Stored Programmes (AREA)

Abstract

本申请涉及软件开发的技术领域,提供了一种持续集成的方法、装置、电子设备及可读存储介质。该方法包括:获取源代码仓库中的第一源代码集合和第一描述文件,并将第一源代码集合和第一描述文件发送至开发终端;对第二源代码集合进行提交验证;若第二源代码集合通过提交验证,则在源代码仓库中将第一源代码集合替换为第二源代码集合;对第二源代码集合进行提取验证;若第二源代码集合通过提取验证,则发送第二源代码集合至安装有环境软件的编译环境镜像;在编译环境镜像下对第二源代码集合进行构建,完成软件的持续集成。本申请解决了软件集成过程中代码的准确性的技术问题。

Description

一种持续集成的方法、装置、电子设备及可读存储介质
技术领域
本申请涉及计算机技术领域,尤其涉及一种持续集成的方法、装置、电子设备及可读存储介质。
背景技术
持续集成是一种软件工程实践,旨在通过自动化的构建和测试来提高软件开发的效率和质量。在持续集成中,每个团队成员都会在每天至少集成一次他们的代码。这种频繁的集成可以快速地发现和解决问题,并避免代码冲突。通过持续集成可以加速软件开发过程。通过频繁地集成和测试代码,可以快速发现和解决问题,避免问题在后期变得严重。其次,持续集成可以提高软件的质量和稳定性。通过自动化的构建和测试,可以确保软件的质量和正确性,减少缺陷和错误。此外,持续集成还可以促进团队的协作和共享代码。团队成员可以更频繁地交流和共享代码,从而提高代码的质量和可维护性。通过自动化的构建和测试,可以快速发现和解决问题,避免问题在后期变得严重。
但是,在持续集成的过程中,存在代码提交错误导致持续集成出现错误,导致持续集成效率低下的问题。
发明内容
有鉴于此,本申请实施例提供了一种持续集成的方法、装置、电子设备及可读存储介质,以解决现有技术中持续集成过程中代码管理错误的问题。
本申请实施例的第一方面,提供了一种持续集成的方法,包括:
获取源代码仓库中的第一源代码集合和第一描述文件,并将第一源代码和第一描述文件发送至开发终端,以使开发终端将第一源代码集合中第一源代码子集合替换为存储在开发终端的目标代码子集合得到第二源代码集合,以及将第一描述文件中第一代码子集合的描述信息替换为目标代码子集合的描述信息得到第二描述文件,其中,第一源代码集合包括多个源代码子集合,第二源代码集合包括第一源代码集合中没有替换的源代码子集合和进行替换后的源代码子集合,第一描述文件为包含第一源代码集合中所有源代码子集合描述信息的文件,第二描述文件为包含第二源代码集合中所有源代码子集合的描述信息的文件;
对第二源代码进行提交验证;
若第二源代码通过提交验证,则在源代码仓库中将第一源代码集合替换为第二源代码集合;
对第二源代码集合进行提取验证;
若第二源代码通过提取验证,则发送第二源代码集合至安装有环境软件的编译环境镜像;
在编译环境镜像下对第二源代码集合进行构建,完成软件的持续集成。
本申请实施例的第二方面,提供了一种持续集成的装置,包括:
获取模块,用于获取源代码仓库中的第一源代码集合和第一描述文件,并将第一源代码和第一描述文件发送至开发终端,以使开发终端将第一源代码集合中第一源代码子集合替换为存储在开发终端的目标代码子集合得到第二源代码子集合,以及将第一描述文件中第一代码子集合的描述信息替换为目标代码子集合的描述信息得到第二描述文件,其中,第一源代码集合包括多个源代码子集合,第二源代码集合包括第一源代码集合中没有替换的源代码子集合和进行替换后的源代码子集合,第一描述文件为包含第一源代码集合中所有源代码子集合描述信息的文件,第二描述文件为包含第二源代码集合中所有源代码子集合的描述信息的文件;
第一验证模块,用于对第二源代码进行提交验证;
提交模块,用于若第二源代码通过提交验证,则在源代码仓库中将第一源代码集合替换为第二源代码集合;
第二验证模块,用于对第二源代码集合进行提取验证;
第一执行模块,用于若第二源代码通过提取验证,则发送第二源代码集合至安装有环境软件的编译环境镜像;
第二执行模块,在编译环境镜像下对第二源代码集合进行构建,完成软件的持续集成。
本申请实施例的第三方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并且可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
本申请实施例的第四方面,提供了一种可读存储介质,该可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
本申请实施例与现有技术相比存在的有益效果是:
通过获取源代码仓库中的第一源代码集合和与第一源代码集合对应的第一描述文件并将第一源代码集合和第一描述文件发送给开发终端,这样可以使得开发人员将开发完成的第二源代码子集合对获取的第一源代码集合中对应的第一源代码子集合进行替换,从而得到包含有第二源代码子集合的第二源代码集合。由于第一描述文件中的描述信息包含有第一源代码子集合的描述信息,在得到第二源代码集合后,将第一描述文件中与第一源代码子集合对应的描述信息修改为与第二源代码子集合对应的描述信息,得到与第二源代码集合对应的第二描述文件。在对第二源代码集合合并到源代码仓库之前,为了保证替换后的源代码的准确,对第二源代码进行提交验证,在第二源代码集合通过提交验证后,将源代码仓库中的第一源代码集合替换为第二源代码集合;在对源代码仓库中的第二源代码集合进行构建之前,为了保证软件构建之前第二源代码集合的准确,对源代码仓库中的第二源代码集合进行提取验证,以保障用于软件构建的第二源代码集合在软件编译之前的准确,将通过提取验证的第二源代码集合发送到安装有环境软件的编译环境镜像,以使用第二源代码集合进行构建,完成持续集成。实现了在集成过程中保障代码在提交和提取的准确性,提高了软件开发的效率和质量,保证了软件构建的准确性和可靠性,解决了现有技术中持续集成由于代码错误导致软件构建效率低下的技术问题。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请实施例提供的一种持续集成的方法的流程示意图;
图2是本申请实施例提供的一种持续集成的装置的结构示意图;
图3是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
下面将结合附图详细说明根据本申请实施例的一种持续集成的方法和装置。
图1是本申请实施例提供的一种持续集成的方法的流程示意图。如图1所示,该持续集成的方法包括:
步骤101,获取源代码仓库中的第一源代码集合和第一描述文件,并将第一源代码集合和第一描述文件发送至开发终端,以使开发终端将第一源代码集合中第一源代码子集合替换为存储在开发终端的第二源代码子集合得到第二源代码集合,以及将第一描述文件中第一源代码子集合的描述信息修改为第二源代码子集合的描述信息得到第二描述文件,其中,第一源代码集合包括多个源代码子集合,第二源代码集合包括第一源代码集合中没有替换的源代码子集合和进行替换后的第二源代码子集合,第一描述文件为包含第一源代码集合中所有源代码子集合描述信息的文件,第二描述文件为包含第二源代码集合中所有源代码子集合的描述信息的文件。
具体的,源代码是指以特定编程语言编写的文本文件,用于控制软件、硬件、计算机程序或系统;源代码仓库指用于管理和存储源代码的中心化或分布式系统,通常包括版本控制、协作工具和构建工具等。源代码仓库是一个保存大量源代码的地方,可以用于备份、版本控制。在具体操作层面,源代码仓库允许开发人员对代码进行分支、合并、回滚等操作,保证代码的质量和稳定性。描述文件指与源代码仓库中源代码,包含所有的代码集合的描述信息;源代码子集合指用于控制一类整体控制功能的代码集合,作为一个示例,第一源代码子集合为第一源代码集合中的一个整体功能文件夹,对应车辆的整体功能模块,其中,源代码子集合的控制内容包括但不限于车辆的热管理、扭矩控制和能量管理,本实施例对此不做任何限制,源代码集合指包含有所有源代码子集合,作为示例,第一源代码集合包含有版本迭代前的所有与车辆整体功能模块对应的源代码子集合。其中源代码子集合中包括有多个软件组件,每个软件组件用于实现单个的控制功能包括但不限于车辆的车速控制、增程器转速控制和空调温度控制,本实施例对此不做限制。描述信息用于描述源代码子集合中的数据、功能或行为,其中,该描述信息包括但不限于修改代码的时间、修改人员、修改日期和对应代码集合的哈希值,本实施例对此不做任何限制,与该源代码子集合互相对应,表示该代码的修改版本即可,可以帮助开发人员理解和维护程序,提高了程序的可读性和可维护性。开发终端指,开发人员编写代码的执行终端,包括但不限于笔记本电脑、台式电脑、平板电脑、智能手机和云端编译环境等,保证开发人员代码的编译即可,本实施例对此不做任何限制。
通过获取源代码仓库中的第一源代码集合和第一描述文件,将第一源代码集合和第一描述文件发送至开发终端,有利于开发人员直接获取源代码仓库中的没有修改的第一源代码集合和第一描述文件,使得开发人员可将已编译并通过测试的第二源代码子集合直接对第一源代码集合中的第一源代码子集合进行替换,得到修改后的第二源代码;同时,获取的第一描述文件将对应第一源代码子集合的描述信息修改为第二源代码子集合对应的描述信息,得到修改的第二描述文件,提高了开发人员修改代码的效率。
步骤102,对第二源代码集合进行提交验证。
具体的,开发终端修改后的第二源代码集合和第二描述文件保存在源代码仓库中的从分支,其中,第一源代码保存位置为源代码仓库的主分支,主分支和从分支的源代码相互独立。提交验证指对开发人员修改的源代码进行内容验证,可以确认修改的源代码是否进行了更新,包括但不限于代码质量验证、错误验证、代码一致性验证、自动化测试等,本实施例对此不做任何限制。
通过获取开发终端修改后的第二源代码集合和第二描述文件,并对第二源代码集合进行提交验证,检查修改的第二源代码集合是否相较于第一源代码集合进行了更新,可以减少代码错误、提高代码质量和软件可靠性,同时确保软件开发的顺利进行。
步骤103,若第二源代码集合通过提交验证,则在源代码仓库中将第一源代码集合替换为第二源代码集合。
具体的,将第一源代码集合替换为第二源代码集合的替换方式可以为单独替换修改的对应代码子集合,在第二源代码集合通过提交验证后,确定第二源代码集合进行了更新,验证了第二源代码集合的正确性,即可以直接替换第一源代码中的修改部分,提高了第二源代码并入源代码仓库的速度。
此外,若第二源代码集合没有通过提交验证,则发送提示消息至开发终端,以使开发人员进行相应的修改;其中,修改过程包括重新获取第一源代码集合执行对应的修改,和/或,直接对第二源代码集合进行修改,本实施例对此不做限制,以告知开发人员代码错误即可。
通过将源代码仓库中的第一源代码替换为第二源代码,保持源代码仓库中代码处于最新状态,确保了代码的一致性。
步骤104,根据源代码仓库中的第二源代码集合和第二描述文件,对第二源代码集合进行提取验证。
具体的,提取验证指在软件构建之前对源代码仓库中保存的源代码进行的验证过程,以确保该源代码可以成功的进行构建,验证构建前源代码仓库中的源代码集合的准确性。
通过根据第二源代码集合和第二描述文件对第二源代码集合进行提取验证,保障了第二源代码集合在实现软件构建之前的准确性。
步骤105,若第二源代码集合通过提取验证,则发送第二源代码集合至安装有环境软件的编译环境镜像。
具体的,环境软件指用于支持软件开发和构建的工具和软件,包括但不限于编译工具、链接软件、十六进制生成工具和合并工具;其中,编译工具是一种用于将源代码转换成可执行代码的软件,包括但不限于GNU编译器套件(GNU Compiler Collection,GCC)和Clang编译器等,本实施例对此不做任何限制;链接软件是将一组相关程序和数据组织在一起形成的一个新的程序的组件;十六进制生成工具是一种用于生成十六进制数的工具;合并工具用来协调代码的合并和集成,包括但不限于开源的分布式版本控制系统(GIT)和开源软件项目(Jenkins)。编译环境镜像指预配置的、包含所有编译软件所需环境、工具和依赖项的软件映像。编译环境也被称为集成开发环境(Integrated DevelopmentEnvironment,IDE),是指用于提供程序开发环境的应用程序。
此外,若第二源代码集合未通过提取验证,则终止集成过程,并发送提示信息至集成终端,以告知集成人员源代码仓库中代码错误;具体的,源代码仓库中的源代码错误,需要对源代码仓库中的第二源代码集合进行修改和完善,还可以寻找开发人员对第二源代码集合进行查验错误,回滚上版本等技术手段,本实施例对此不做限制。
通过将通过提取验证的第二源代码集合发送至安装有环境软件的编译环境镜像,在编译环境镜像下确保了编译环境的一致性和可重复性,减少了因为环境差异出现的兼容性、配置、版本不一致的问题,提高了软件的开发效率。
步骤106,在编译环境镜像下对第二源代码集合进行构建,完成软件的持续集成。
具体地,构建指将源代码转换为可执行程序或库文件的过程,例如,在进行构建前,通过编译环境镜像生成编译环境容器,在将源代码目录映射至编译环境容器,在多个环境容器可以访问同一份源代码,方便了开发人员协作开发和维护应用程序,在编译环境镜像中完成对第二源代码集合的构建,实现了软件的持续集成,提高了软件开发的高效性、可靠性和安全性。
根据本申请实施例提供的技术方案,通过将需要源代码仓库中的第一源代码集合和与第一源代码集合对应的第一描述文件发送到开发终端,这样,开发人员可以根据获取的第一源代码集合替换对应的源代码子集合得到修改后的第二源代码集合,在第一描述文件中将第一源代码子集合对应的描述信息修改为与第二源代码子集合对应的描述信息得到第二描述文件;在第二源代码集合进行并通过提交验证后,保证了源代码进行了更新,将第二源代码集合合并到源代码仓库中,使得源代码仓库中所保存的为第二源代码集合,在软件构建之前,对源代码仓库中修改后的第二源代码集合进行提取验证,保证源代码的准确性,并将该第二源代码集合发送至安装有环境软件的编译环境镜像中,在编译环境镜像下完成软件的构建,实现了软件开发的持续集成,提高了软件开发的效率,保证了对修改后源代码的正确性和稳定性。
在一些实施例中,对第二源代码进行提交验证,包括:
获取用户修改后的第二源代码集合和与第二源代码集合对应的第二描述文件;
根据第二源代码集合生成与第二源代码集合对应的第三描述文件;
将第一描述文件和第三描述文件的描述信息进行对比;
若第一描述文件与第三描述文件中有差异的描述信息数量等于1,则对有差异的描述信息生成校验码;
对比第二描述文件与第三描述文件的描述信息;
若第二描述文件和第三描述文件中描述信息一致,则将校验码并入第二描述文件,判定第二源代码集合通过提交验证。
具体的,第三描述文件为系统基于第二源代码集合并根据描述信息的规范格式自动生成的描述文件,所生成的描述信息由于格式的规范,理论上与手动修改的描述信息保持一致。校验码指示开发人员修改的源代码子集合,和该源代码子集合的描述信息对应,并且可与描述信息互相转换,方便之后的验证。
此外,第一描述文件与第三描述文件中有差异的描述信息数量不为1,则停止集成过程,发送提示至开发终端,以告知开发人员源代码未修改或所修改的源代码子集合错误;具体的,第一描述文件与第三描述文件中有差异的描述信息数量为0,说明本次提交的源代码并没有发生变动,第一描述文件与第三描述文件中有差异的描述信息数量大于1,说明了本次提交的源代码中有多个源代码子集合进行了修改,由于开发人员只对应修改一个源代码子集合,进一步说明了源代码修改的错误。若第二描述文件和第三描述文件中描述信息不一致,则停止集成过程,发送提示至开发终端,以告知开发人员源代码修改的源代码子集合发生错误。具体的,由于第二描述文件为开发人员修改,第三描述文件为系统根据第二源代码集合进行的修改,若描述信息不一致,则说明了第二描述文件所修改描述信息不能描述第二源代码集合中修改后的第二源代码子集合,即所提交的源代码发生错误。
根据本申请实施例提供的技术方案,通过系统根据第二源代码集合生成的第三描述文件与第一描述文件进行对比,在开发人员修改的代码没有出现错误的情况下,由于第三描述文件和开发人员修改的第二描述文件完全相同,通过对比第三描述文件和第一描述文件的描述信息,可以确定开发人员修改替换的第二源代码子集合,由于开发人员对应修改的源代码子集合只有一个,在第二源代码集合获取的第三描述文件与第一描述文件中有差异的只有一个描述信息的情况下,确保了开发人员上传的第二源代码集合有修改且只对其中的一个源代码子集合进行修改,并且,在对比出的描述信息的差异之后,将第三描述文件中有差异的描述信息生成校验码,若所修改代码准确,则该校验码指示对应修改的第二源代码子集合;在确定第二源代码集合中,开发人员仅对其中的一个源代码子集合进行修改后,对比开发人员修改的第二描述文件和第三描述文件,由于开发人员修改的源代码子集合和描述信息一致,则第二描述文件和第三描述文件无任何差异,确定了修改的第二源代码集合对比第一源代码集合进行了更新且保证了更新的准确,该第二源代码集合通过提交验证,避免了开发人员对源代码子集合的修改错误,提高了软件源代码的准确性。
此外,在一些实施例中,获取源代码仓库中的第二源代码集合和第二描述文件,对第二源代码集合进行提取验证,包括:
获取源代码仓库中的第二源代码集合和第二描述文件;
获取第二源代码集合中源代码子集合的数量信息和第二描述文件中描述信息的数量信息;
若第二源代码集合中源代码子集合的数量和第二描述文件中描述信息的数量一致,则将校验码解析为描述信息;
若校验码解析的描述信息与第二描述文件内的描述信息内容一致,则通过提取验证。
具体的,若第二源代码集合中源代码子集合的数量和第二描述文件中描述信息的数量不一致,则终止运行并发出错误信息,由于源代码子集合都有对应的描述信息,源代码子集合的数量和第二描述文件中描述信息的数量不一致,即源代码仓库中的源代码不是标准的源代码,出现了源代码子集合的增加或减少的情况;若校验码解析的描述信息与第二描述文件内的描述信息内容不一致,则终止运行并发出错误信息,校验码中的描述信息指示源代码集合中对应修改的第二源代码子集合,若内容不一致,则说明描述信息存在错误,进一步说明了源代码出现错误,例如出现源代码仓库中源代码版本和执行过提交验证的源代码版本不一致的情况,应理解,本实施例仅为了说明,并不代表只有所提出的错误状况,具体发生错误的类型可通过开发人员进行确定。
根据本申请实施例提供的技术方案,通过获取源代码仓库中的第二源代码集合和第二描述文件,由于在软件持续集成开始之前,需要保证对集成的源代码的准确性,即在对获取的第二源代码集合进行提取验证。首先确定第二源代码集合中源代码子集合的数量和第二描述文件中的描述信息保持一致,即可确定源代码仓库中的第二源代码集合的源代码子集合没有增加和减少,确保了源代码子集合数量正确;在确定源代码子集合数量正确后,由于在进行软件构建前对于源代码仓库中的源代码集合的修改次数至少为一次,产生的校验码也至少有一个,通过将第二描述文件所包含的校验码解析为描述信息,并与第二描述文件中的描述信息进行对比,若第二描述文件中的描述信息和校验码解析得到的描述信息一致,则说明了描述文件中的描述信息准确,根据描述文件和源代码子集合之间的相关性,同时保证了所获取的第二源代码集合的准确性,在通过提取认证的第二源代码集合进行软件构建,若未通过提取验证,可以做到及时终止流程,提高软件构建的效率。
在一些实施例中,编译环境镜像下对第二源代码集合进行构建之后,还包括:
在工具链仓库中获取第一源代码集合对应软件的第一版本号;
基于第一版本号生成下一版本号作为软件的第二版本号;
将第二版本号刷写至软件并将第二版本号发送至工具链仓库。
具体的,工具链仓库指的是一个集合了各种软件开发工具和集成开发环境的仓库,方便了开发人员获取和共享各种工具,以及管理工具的版本和依赖关系。通过工具链仓库,开发人员可以轻松地获取所需的工具,并进行统一的版本控制和集成。版本号用于标识软件的不同版本,用于表示软件的构建、版本和修订状态。版本号的刷写指将所生成的版本号对软件版本号进行更新,例如,作为一个示例,首先将软件总版本号拆解成时间信息字符、供应商代码信息字符、版本号信息字符,将所获取到的软件版本号字符转换成数值,再转换成对应的十六进制,最后将各个预定义的信号名与十六进制映射,作为参数写入信号名映射文件,得到版本号信号名映射文件,调用版本号刷写工具,自动读取版本号信号名映射文中标定量名称与值信息,将其信号的值刷写软件中,完成版本号刷写。
根据本申请实施例提供的技术方案,通过获取工具链中的第一源代码集合对应软件的第一版本号,并根据该第一版本号生成第二版本号,将该第二版本号刷写到所构建的软件中,并替换掉工具链仓库中的第一版本号,由于直接获取工具链仓库中的第一版本号生成第二版本号,方便集成人员快速对软件版本号的迭代,提高了软件版本快速迭代的效率、准确性和可持续性,通过将版本号刷写到软件,提高了对软件版本管理准确性,提高了软件的可读性。
此外,在一些实施例中,基于第一版本号生成下一版本号作为软件的第二版本号,包括:
获取软件构建完成的时间信息、供应商信息和软件构建之前的主版本号、次版本号和补充版本号;
根据软件的功能和特性更新确定主版本号、次版本号和补充版本号各自对应的布尔参数;
根据布尔参数分别对主版本号、次版本号和补充版本号进行修改;
根据时间信息、供应商信息和修改后的主版本号、次版本号和补充版本号生成软件的第二版本号。
具体的,布尔参数用于判断条件是否成立,在本实施例中,用于指示软件版本号的迭代关系,例如,作为一个示例,若主版本号的布尔参数为True,则将提取到的主版本号叠加1得到处理后的主版本号。时间信息和供应商信息为软件固定的描述信息。
根据本申请实施例提供的技术方案,通过获取软件构建完成的时间信息、供应商信息以及软件构建之前的主版本号、次版本号和补充版本号,通过确定主版本号、次版本号和补充版本号各自对应的布尔参数从而自动更新得到软件构建后的主版本号、次版本号和补充版本号,最后将时间信息、供应商代码信息、版本号信息进行字符串生成,得到最终的软件总版本号,方便了集成人员对软件版本号的快速迭代更新。
在一些实施例中,在编译环境镜像下对第二源代码集合进行构建,完成软件的持续集成,包括:
在编译环境镜像生成编译环境容器并安装预设环境软件;
在编译环境容器中基于预设环境软件完成对第二源代码集合的构建。
具体的,在编译环境容器中对第二源代码集合进行构建具体操作并不限制,例如,作为一个实施例,在生成汽车控制器中的软件过程中,编译环境采用Linux环境,生成Linux环境镜像,在初始镜像的基础上安装各种环境软件包括编译工具,链接软件,十六进制生成工具,合并工具等,通过编译环境镜像生成编译环境容器,获取第二源代码,调用编译工具,完成所有源代码的编译,得到目标文件,继续调用链接工具,完成所有编译后的目标文件的链接,得到静态库文件(archive file,a)链接文件。将其与底层.a文件进行最后的链接生成可执行与可链接格式(Executable and Linkable Format,elf)二进制文件、描述发动机控制单元(Engine Control Unit,ECU)数据的a2l文件、图像数据调用文件(map file,map文件)。该模块调用地址写入工具将map文件中的地址信息全部写入a2l文件生成带有地址信息的A2L文件,最后调用十六进制生成工具,将elf二进制文件生成可执行的软件,完成软件的构建。其中A2L文件指用于描述ECU功能和特性的标准化文件格式,它定义了参数的名称、数据类型、物理单位、最小值和最大值等信息。
根据本申请实施例提供的技术方案,通过在环境镜像下生成编译环境容器并安装预设环境软件,实现了编译环境的统一,在编译环境容器下完成软件的编译链接等构建过程,由于开发编译环境的隔离性,每次持续集成的一致性,从而提高持续集成效率。
在一些实施例中,在编译环境镜像下对第二源代码集合进行构建,完成软件的持续集成之后,还包括:
在储存空间中生成目标目录并保存软件至目标目录,目标目录的命名根据软件完成构建的时间信息确定;
发送目标目录的信息给开发终端以指示软件开发完毕。
具体地,存储空间为开发人员可直接查看的共享存储空间,可直接查看存储到该存储空间内各版本软件;目标目录的命名可通过直接获取当前的系统时间确定,例如,作为一个示例,获取当前系统的年月日时分秒毫秒信息,组成字符串作为本次软件发布的版本目录名。
根据本申请实施例提供的技术方案,通过并在存储空间中生成当前软件完成构建的时间信息的目标目录,将软件发送至该目标目录下,将该目标目录信息发送到各开发终端,提示开发人员软件开发完毕,完成了软件的发布,保证了软件发布的规范性。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图2是本申请实施例提供的一种持续集成的装置的示意图。如图2所示,该持续集成的装置包括:
获取模块201,用于获取源代码仓库中的第一源代码集合和第一描述文件,并将第一源代码集合和第一描述文件发送至开发终端,以使开发终端将第一源代码集合中第一源代码子集合替换为存储在开发终端的第二源代码子集合得到第二源代码集合,以及将第一描述文件中第一源代码子集合的描述信息修改为第二源代码子集合的描述信息得到第二描述文件,其中,第一源代码集合包括多个源代码子集合,第二源代码集合包括第一源代码集合中没有替换的源代码子集合和进行替换后的第二源代码子集合,第一描述文件为包含第一源代码集合中所有源代码子集合描述信息的文件,第二描述文件为包含第二源代码集合中所有源代码子集合的描述信息的文件。
第一验证模块202,用于对第二源代码集合进行提交验证。
提交模块203,用于若第二源代码集合通过提交验证,则在源代码仓库中将第一源代码集合替换为第二源代码集合。第二验证模块204,用于对第二源代码集合进行提取验证。
第一执行模块205,用于若第二源代码集合通过提取验证,则发送第二源代码集合至安装有环境软件的编译环境镜像。
第二执行模块206,用于在编译环境镜像下对第二源代码集合进行构建,完成软件的持续集成。
在一些实施例中,第二验证模块具体用于获取用户修改后的第二源代码集合和与第二源代码集合对应的第二描述文件;根据第二源代码集合生成与第二源代码集合对应的第三描述文件;将第一描述文件和第三描述文件的描述信息进行对比;若第一描述文件与第三描述文件中有差异的描述信息数量等于1,则对有差异的描述信息生成校验码;对比第二描述文件与第三描述文件的描述信息;若第二描述文件和第三描述文件中描述信息一致,则将校验码并入第二描述文件,判定第二源代码集合通过提交验证。
此外在一些实施例中,第二验证模块具体用于获取源代码仓库中的第二源代码集合和第二描述文件;获取第二源代码集合中源代码子集合的数量信息和第二描述文件中描述信息的数量信息;若第二源代码集合中源代码子集合的数量和第二描述文件中描述信息的数量一致,则将校验码解析为描述信息;若校验码解析的描述信息与第二描述文件内的描述信息内容一致,则通过提取验证。
在一些实施例中,第二执行模块之后还有版本号刷写模块,具体用于在工具链仓库中获取第一源代码集合对应软件的第一版本号;基于第一版本号生成下一版本号作为软件的第二版本号;将第二版本号刷写至软件并将第二版本号发送至工具链仓库。
此外,在一些实施例中,版本号刷写模块还用于获取软件构建完成的时间信息、供应商信息和软件构建之前的主版本号、次版本号和补充版本号;根据软件的功能和特性更新确定主版本号、次版本号和补充版本号各自对应的布尔参数;根据布尔参数分别对主版本号、次版本号和补充版本号进行修改;根据时间信息、供应商信息和修改后的主版本号、次版本号和补充版本号生成软件的第二版本号。
在一些实施例中,第二执行模块具体用于在编译环境镜像生成编译环境容器并安装预设环境软件;在编译环境容器中基于预设环境软件完成对第二源代码集合的构建。
在一些实施例中,第二执行模块之后还有发布模块,具体用于在储存空间中生成目标目录并保存软件至目标目录,目标目录的命名根据软件完成构建的时间信息确定;发送目标目录的信息给开发终端以指示软件开发完毕。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图3是本申请实施例提供的电子设备3的示意图。如图3所示,该实施例的电子设备3包括:处理器301、存储器302以及存储在该存储器302中并且可在处理器301上运行的计算机程序303。处理器301执行计算机程序303时实现上述各个方法实施例中的步骤。或者,处理器301执行计算机程序303时实现上述各装置实施例中各模块/单元的功能。
电子设备3可以是桌上型计算机、笔记本、掌上电脑及云端服务器等电子设备。电子设备3可以包括但不仅限于处理器301和存储器302。本领域技术人员可以理解,图3仅仅是电子设备3的示例,并不构成对电子设备3的限定,可以包括比图示更多或更少的部件,或者不同的部件。
处理器301可以是中央处理单元(Central Processing Unit,CPU),也可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
存储器302可以是电子设备3的内部存储单元,例如,电子设备3的硬盘或内存。存储器302也可以是电子设备3的外部存储设备,例如,电子设备3上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。存储器302还可以既包括电子设备3的内部存储单元也包括外部存储设备。存储器302用于存储计算机程序以及电子设备所需的其它程序和数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读存储介质(例如计算机可读存储介质)中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可以存储在计算机可读存储介质中,该计算机程序在被处理器执行时,可以实现上述各个方法实施例的步骤。计算机程序可以包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读存储介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random AccessMemory,RAM)、电载波信号、电信信号以及软件分发介质等。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种持续集成的方法,其特征在于,包括:
获取源代码仓库中的第一源代码集合和第一描述文件,并将所述第一源代码集合和所述第一描述文件发送至开发终端,以使所述开发终端将所述第一源代码集合中第一源代码子集合替换为存储在开发终端的第二源代码子集合得到第二源代码集合,以及将所述第一描述文件中所述第一源代码子集合的描述信息修改为所述第二源代码子集合的描述信息得到第二描述文件,其中,所述第一源代码集合包括多个源代码子集合,所述第二源代码集合包括所述第一源代码集合中没有替换的源代码子集合和进行替换后的所述第二源代码子集合,所述第一描述文件为包含所述第一源代码集合中所有源代码子集合描述信息的文件,第二描述文件为包含所述第二源代码集合中所有源代码子集合的描述信息的文件;
对所述第二源代码集合进行提交验证;
若所述第二源代码集合通过提交验证,则在所述源代码仓库中将第一源代码集合替换为所述第二源代码集合;
对所述第二源代码集合进行提取验证;
若所述第二源代码集合通过所述提取验证,则发送所述第二源代码集合至安装有环境软件的编译环境镜像;
在所述编译环境镜像下对所述第二源代码集合进行构建,完成软件的持续集成。
2.根据权利要求1所述的持续集成的方法,其特征在于,所述对所述第二源代码集合进行提交验证,包括:
获取用户修改后的第二源代码集合和与所述第二源代码集合对应的第二描述文件;
根据所述第二源代码集合生成与所述第二源代码集合对应的第三描述文件;
将所述第一描述文件和所述第三描述文件的描述信息进行对比;
若所述第一描述文件与所述第三描述文件中有差异的描述信息数量等于1,则对所述有差异的描述信息生成校验码;
对比所述第二描述文件与所述第三描述文件的描述信息;
若所述第二描述文件和所述第三描述文件中描述信息一致,则将所述校验码并入所述第二描述文件,判定所述第二源代码集合通过提交验证。
3.根据权利要求2所述的持续集成的方法,其特征在于,所述获取所述源代码仓库中的所述第二源代码集合和所述第二描述文件,对所述第二源代码集合进行提取验证,包括:
获取所述源代码仓库中的所述第二源代码集合和所述第二描述文件;
获取所述第二源代码集合中源代码子集合的数量信息和所述第二描述文件中描述信息的数量信息;
若所述第二源代码集合中源代码子集合的数量和所述第二描述文件中描述信息的数量一致,则将所述校验码解析为描述信息;
若所述校验码解析的描述信息与所述第二描述文件内的描述信息内容一致,则通过所述提取验证。
4.根据权利要求1所述的持续集成的方法,其特征在于,在所述编译环境镜像下对所述第二源代码集合进行构建之后,还包括:
在工具链仓库中获取所述第一源代码集合对应软件的第一版本号;
基于所述第一版本号生成下一版本号作为所述软件的第二版本号;
将所述第二版本号刷写至所述软件并将所述第二版本号发送至所述工具链仓库。
5.根据权利要求4所述的持续集成的方法,其特征在于,所述基于所述第一版本号生成下一版本号作为所述软件的第二版本号,包括:
获取所述软件构建完成的时间信息、供应商信息和软件构建之前的主版本号、次版本号和补充版本号;
根据软件的功能和特性更新确定所述主版本号、所述次版本号和所述补充版本号各自对应的布尔参数;
根据所述布尔参数分别对所述主版本号、所述次版本号和所述补充版本号进行修改;
根据所述时间信息、供应商信息和修改后的所述主版本号、所述次版本号和所述补充版本号生成所述软件的第二版本号。
6.根据权利要求1所述的持续集成的方法,其特征在于,所述在所述编译环境镜像下对所述第二源代码集合进行构建,完成软件的持续集成,包括:
在所述编译环境镜像生成编译环境容器并安装预设环境软件;
在所述编译环境容器中基于所述预设环境软件完成对所述第二源代码集合的构建。
7.根据权利要求1所述的持续集成的方法,其特征在于,在所述编译环境镜像下对所述第二源代码集合进行构建,完成软件的持续集成之后,还包括:
在储存空间中生成目标目录并保存所述软件至所述目标目录,所述目标目录的命名根据所述软件完成构建的时间信息确定;
发送所述目标目录的信息给开发终端以指示所述软件开发完毕。
8.一种持续集成的装置,其特征在于,包括:
获取模块,用于获取源代码仓库中的第一源代码集合和第一描述文件,并将所述第一源代码集合和所述第一描述文件发送至开发终端,以使所述开发终端将所述第一源代码集合中第一源代码子集合替换为存储在开发终端的第二源代码子集合得到第二源代码集合,以及将所述第一描述文件中所述第一源代码子集合的描述信息修改为所述第二源代码子集合的描述信息得到第二描述文件,其中,所述第一源代码集合包括多个源代码子集合,所述第二源代码集合包括所述第一源代码集合中没有替换的源代码子集合和进行替换后的所述第二源代码子集合,所述第一描述文件为包含所述第一源代码集合中所有源代码子集合描述信息的文件,第二描述文件为包含所述第二源代码集合中所有源代码子集合的描述信息的文件;
第二验证模块,用于对所述第二源代码集合进行提取验证;
第一执行模块,用于若所述第二源代码集合通过所述提取验证,则发送所述第二源代码集合至安装有环境软件的编译环境镜像;
第二执行模块,在所述编译环境镜像下对所述第二源代码集合进行构建,完成软件的持续集成。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并且可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述方法的步骤。
10.一种可读存储介质,所述可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述方法的步骤。
CN202311387396.5A 2023-10-24 2023-10-24 一种持续集成的方法、装置、电子设备及可读存储介质 Pending CN117331539A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311387396.5A CN117331539A (zh) 2023-10-24 2023-10-24 一种持续集成的方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311387396.5A CN117331539A (zh) 2023-10-24 2023-10-24 一种持续集成的方法、装置、电子设备及可读存储介质

Publications (1)

Publication Number Publication Date
CN117331539A true CN117331539A (zh) 2024-01-02

Family

ID=89295198

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311387396.5A Pending CN117331539A (zh) 2023-10-24 2023-10-24 一种持续集成的方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN117331539A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118331588A (zh) * 2024-06-13 2024-07-12 杭州行至云起科技有限公司 代码库封装方法、程序打包方法及装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN118331588A (zh) * 2024-06-13 2024-07-12 杭州行至云起科技有限公司 代码库封装方法、程序打包方法及装置

Similar Documents

Publication Publication Date Title
CN108595342B (zh) 单元测试方法和装置
US10782936B1 (en) Programming migration system and methods
CN111399853A (zh) 机器学习模型与自定义算子的模板化部署方法
EP1170667A1 (en) Software package verification
CN111142899A (zh) 数据库脚本执行方法、装置、存储介质及电子设备
CN117331539A (zh) 一种持续集成的方法、装置、电子设备及可读存储介质
US20110137859A1 (en) Staged Data Conversion
CN109977008B (zh) 一种应用程序依赖的js代码与原生库兼容的方法及终端
US8661414B2 (en) Method and system for testing an order management system
CN113742215B (zh) 一种自动配置和调用测试工具进行测试分析的方法及系统
CN108170465A (zh) 一种版本信息管理方法、电子设备及可读存储介质
US20230061121A1 (en) Methods concerning ongoing treatment for cancer
CN112181854A (zh) 一种生成流程自动化脚本的方法、装置、设备及存储介质
CN117234926A (zh) 基于autosar架构的软件组件接口检查方法及装置
CN117215558A (zh) 安卓的基于可视化的软件开发方法、装置、设备及介质
Vuli et al. Maximizing test asset re-use across MIL, SIL, and HIL development platforms
CN113504904A (zh) 用户定义函数实现方法、装置、计算机设备和存储介质
WO2021236057A1 (en) Industrial application package management
CN117632114B (zh) 一种基于文件分析的fmu文件的导入方法和装置
WO2024195336A1 (ja) トレーサビリティ情報抽出装置およびトレーサビリティ情報検証装置
US20240241889A1 (en) Framework for building cluster management controllers
EP3696764A1 (en) Data processing
Kruse Systematic Testing in the Agile Development Process
CN117331822A (zh) 接口测试及修复方法、装置和电子设备及存储介质
CN114817054A (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