一种代码发布方法及装置与流程

未命名 09-17 阅读:70 评论:0


1.本技术涉及软件开发技术领域,特别是涉及一种代码发布方法及装置。


背景技术:

2.随着软件开发技术的发展,软件交付节奏也在加快,开发流程日益自动化,大多软件公司配置自己的代码发布系统。现常见的代码发布系统中,没法一站式提供所有服务,其核心通常采用基于mysql数据库的cmdb系统,具有前端web ui操作界面,搭建时借助于种类繁多的开源工具,比如,jira、gitlab、jenkins等等。因此,现有的代码发布系统在维护软件时,运维人员需要了解涉及的所有开源工具,当开源工具出现问题时,需要分别查看对应开源工具的日志以进行分析,导致运维成本大大增加。


技术实现要素:

3.基于此,针对开源工具使用的专业度要求以及代码发布的流程繁杂问题,本技术供一种代码发布方法及装置,以简化代码发布的流程,利用预配置流程可以直接使用开源工具。
4.第一方面,本技术提供了一种代码发布方法,方法包括:
5.接收目标软件的回滚指令,回滚指令至少包括待回滚的版本信息;
6.根据版本信息,从预设的制品库中搜索目标软件的代码包;
7.将搜索到的代码包,通过scp传输至预设的目标环境中,并生成代码发布指令;
8.根据代码发布指令,执行代码发布的预配置流程。
9.其中一种实施例中,接收目标软件的回滚指令的步骤之前,还包括:利用代码发布的预配置流程,制备目标软件的至少一个版本的代码包及其对应的配置信息,并进行相应的存储。
10.其中一个实施例中,根据代码发布指令,执行代码发布的预配置流程的步骤,包括:
11.接收目标软件的代码发布指令;
12.根据代码发布指令,生成对应于发布节点的任务事项以及任务单;
13.响应于触发任务事项,提取任务单中的配置信息;
14.根据配置信息,确定当前任务事项所处的发布节点;
15.利用配置信息,执行当前发布节点的预配置流程,当完成所有发布节点的任务事项后,完成发布目标软件的代码包。
16.其中一个实施例中,任务事项包括功能新建事件;当任务事项为功能新建事件时,任务单为需求单;
17.利用配置信息,执行当前发布节点的预配置流程的步骤,包括:
18.响应于触发功能新建事件,接收需求单中的第一配置信息;
19.根据第一配置信息,利用目标软件的develop分支,自动派生出feature分支;
20.利用feature分支,引导开发代码包,并建立feature分支与代码包的关联关系。
21.其中一个实施例中,利用配置信息,执行当前发布节点的预配置流程的步骤,还包括:
22.提取需求单中的第一配置信息;
23.根据预设的命名规则,利用第一配置信息,自动更新feature分支的名称,根据重命名后的feature分支引导代码包的开发;
24.其中,第一配置信息包括应用名称、版本号和功能名称,feature分支的重命名为:feature_版本号_功能名称。
25.其中一个实施例中,任务事项包括提测申请事件,当任务事项为提测申请事件时,任务单为提测单;利用配置信息,执行当前发布节点的预配置流程的步骤,包括:
26.响应于触发提测申请事件,接收提测单中的第二配置信息;
27.利用第二配置信息,自动建立提测单与develop分支的关联关系;
28.根据关联关系,选择所对应的feature分支及其所关联的代码包;
29.将feature分支合并至develop分支中,构成新develop分支;
30.利用新develop分支,对代码包进行编译、代码扫描、单元测试在内的转换操作,以生成代码包对应的软件制品,并将软件制品存储至制品库,执行s3对象存储。
31.其中一个实施例中,任务事项包括一键发布事件,当任务事项为一键发布事件时,任务单为发布单;
32.利用配置信息,执行当前发布节点的预配置流程的步骤,包括:
33.响应于触发一键发布事件,接收发布单中的第三配置信息;
34.根据第三配置信息,选择待上线的代码包,部署于预设的预发布环境,以进行目标软件的更新;
35.对目标软件进行预发布环境和功能的验证,并在验证通过后,完成代码包所对应目标功能的上线。
36.其中一个实施例中,利用配置信息,执行当前发布节点的预配置流程的步骤,还包括:
37.将待上线的代码包,部署于预设的预发布环境,对代码包所对应的目标软件进行更新处理,以获取新目标软件;
38.将新目标软件发布至预发布环境中,以进行预发布验证;
39.以及将新目标软件发布至生成环境的各校验设备上,以进行功能验证。
40.其中一个实施例中,响应于触发提测申请事件,执行首次提交提测单时的sql语句的变更,并在新目标软件发布至预发布环境的步骤之前,执行变更后的sql语句。
41.第二方面,本技术提供了一种代码发布装置,系统包括:指令接收模块、软件搜索模块、软件部署模块以及流程执行模块,其中,
42.指令接收模块,用于接收目标软件的回滚指令,回滚指令至少包括待回滚软件的版本信息;
43.软件搜索模块,用于根据版本信息,从预设的制品库中搜索目标软件的代码包;
44.软件部署模块,用于将搜索到的代码包,通过scp传输至预设的目标环境中,生成代码发布指令;
45.流程执行模块,用于根据代码发布指令,执行代码发布的预配置流程。
46.上述提供的代码发布方法及装置,由于采用了根据版本信息从预设的制品库中搜索目标软件的代码包,通过scp传输至预设的目标环境中,生成代码发布指令;根据代码发布指令,执行代码发布的预配置流程,实现了不受开源工具影响,具备一键发布、历史版本回溯、回滚发布等功能。其中,由于采用了根据代码发布指令,生成对应于发布节点的任务事项以及任务单,以此来控制代码发布流程的节点,进而有效控制代码发布的进程。由于采用了根据任务事项,提取任务单中的配置信息;根据配置信息,确定所处的发布节点,进而执行当前代码发布节点的预配置流程,使得依次完成所有代码发布节点的任务事项后,完成发布目标软件的代码包。因此,从软件未开发到软件存储后的所有流程节点都已得到有效控制,且不受开源工具的限制。由于采用了将发布流程分为多个任务事项,根据目标软件当前的开发进程生成对应的任务事项,比如,已存于制品库的目标软件和未存于制品库的目标软件生成不同发布节点的任务事项。当发布的目标软件出现任何异常时,能够快速找出异常的流程节点,并在找出异常的代码包后,进而执行回滚操作,利用feature分支,选择要回滚的目标环境、目标应用和版本号,自动从制品库搜索指定版本的代码包,并且能够将查询到的代码包通过scp命令传输到目标环境机器上,并按照从配置管理中心读取到的应用配置信息进行软件的部署操作。利用统一的访问界面,具备任务事项的项目管理、代码管理、代码一键代码发布、运维管理等在内的功能;并且在开源工具(例如gitlab、jenkins等)之上提供了一层抽象层,不再受限开源工具,实现统一的管理和日志分析,提高了问题定位的效率;同时降低了运维人员的学习和后期维护成本。
47.附图说明
48.图1为一个实施例中代码发布方法的应用环境图;
49.图2为一个实施例中代码发布方法的流程示意图;
50.图3为一个实施例中代码发布方法的各发布节点流程示意图;
51.图4为一个实施例中代码发布装置的结构框图;
52.图5为一个实施例中计算机设备的内部结构图。
具体实施方式
53.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
54.在阐述具体实施例之前,对相关术语做进一步解释。本实施例支持java和node.js代码包的一键发布、版本历史记录回溯、回滚发布等功能,其中,java是一种通用的基于类的面向对象的编程语言,node.js是一种基于chrome v8引擎的javascript运行环境。利用本实施例中的代码发布方法还可以应用于groovy脚本、shell脚本和python语言实现的一键式代码发布。对此,本实施例实现的代码发布方法不再局限于开源工具的使用。
55.传统的车机软件发布流程由于缺少配置管理中心,导致在进行新车型平台开发时,必须重新开发发版相关的代码,多种车型平台之间发布相关代码复用度低,而采用本实
施例中的代码发布方法,将各软件的各版本独立出来进行存储,在后续进行新项目或新平台开发时,可以最大程度复用代码。
56.本技术提供的代码发布方法,可以应用于如图1所示的应用环境中。其中,应用环境包括控制中心100、数据存储中心200。数据存储中心200用于提供基础数据支撑,存储目标软件的配置信息、部署环境等信息。进一步地,目标软件的代码包可以存储于数据存储中心200关联的制品库中,以进行不同平台的调用。通过数据存储中心200查看目标软件各类版本的部署情况以及对应版本号等配置信息,部署情况可以为各版本在各机房的部署情况。数据存储中心200可以但不限于采用cmdb(configuration management database,配置管理数据库)存储配置信息和环境部署信息。控制中心100用于执行代码发布的程序流程,控制代码发布的流程节点,根据触发相应的任务事项,调取数据存储中心200中需求单、提测单、发布单中的配置信息,分配参与对象的工作权限,可以通过组(group)和角色(role)进行权限控制。
57.此外,应用环境还包括配置管理中心300,配置管理中心300用于存储各类目标软件的配置数据,例如,数据库的用户名和密码等敏感数据,在目标软件更新发布时,将配置数据关联给更新后的目标软件。
58.在一个实施例中,如图2所示,提供了一种代码发布方法,以该方法应用于图1中的控制中心为例进行说明,包括以下步骤:
59.步骤s100,接收目标软件的回滚指令,回滚指令至少包括待回滚的版本信息。
60.步骤s200,根据版本信息,从预设的制品库中搜索目标软件的代码包。
61.步骤s300,将搜索到的代码包,通过scp传输至预设的目标环境中,生成代码发布指令。其中,scp表示scp命令,用于进行传输文件,本实施例用于传输代码包及任务单中的配置信息。
62.步骤s400,根据代码发布指令,执行代码发布的预配置流程。
63.在一种实施例中,步骤s100,接收目标软件的回滚指令的步骤之前,还包括:利用代码发布的预配置流程,制备目标软件的至少一个版本的代码包及其对应的配置信息,并进行相应的存储。本实施例中将可以代码包存储于制品库中,其对应的配置信息存储于关联的数据库中。制品库中可以预存目标软件的不止一个版本的代码包,根据回滚指令中的版本信息,自动搜索预存的目标软件对应版本信息的代码包,然后利用代码发布的预配置流程进行目标软件的代码自动发布。
64.在一种实施例中,步骤s400,根据代码发布指令,执行代码发布的预配置流程的步骤,包括:
65.步骤s401,接收目标功能的代码发布指令。
66.步骤s402,根据代码发布指令,生成对应于发布节点的任务事项以及任务单。步骤s402,根据代码发布指令,生成对应于发布节点的任务事项以及任务单的步骤进一步,还包括:
67.判断代码发布指令是否存在版本信息,若存在版本信息,则表示已存在对应版本信息的目标软件,生成的任务事项包括一键发布事件;若不存在版本信息,则表示当前制品库中不存在对应版本信息的目标软件,需要重新制备对应版本的目标软件,生成的任务事项包括功能新建事件、提测申请事件以及一键发布事件。
68.步骤s403,响应于触发任务事项,提取任务单中的配置信息。
69.步骤s404,根据配置信息,确定当前任务事项所处的发布节点。
70.步骤s405,利用配置信息,执行当前发布节点的预配置流程,当完成所有发布节点的任务事项后,完成目标功能的代码包发布。
71.在一种实施例中,任务事项按照代码发布节点的流程至少包括功能新建事件、提测申请事件、一键发布事件在内的代码发布节点的自动控制操作。通过对代码发布节点的控制操作,有效控制代码发布的进程,避免发布进程中出现异常时无法追溯、难管控的问题。
72.在一种实施例中,任务事项包括功能新建事件;当任务事项为功能新建事件时,任务单为需求单。功能新建事件可以理解为目标软件对应版本的代码包发布的首个发布节点,也可理解为新增业务功能的代码包的首个发布节点。
73.进一步,在步骤s405中,利用配置信息,执行当前发布节点的预配置流程的步骤,包括:
74.响应于触发功能新建事件,接收需求单中的第一配置信息;根据第一配置信息,利用目标软件的develop分支,自动派生出feature分支;利用feature分支,引导开发代码包,并建立feature分支与代码包的关联关系。本实施例可以采用git分支模型进行代码库的部署,通过git分支模型中的develop分支、feature分支来表示待开发代码包的部署位置。
75.在一种实施例中,步骤s405,利用配置信息,执行当前发布节点的预配置流程的步骤,还包括:
76.提取需求单中的第一配置信息;根据预设的命名规则,利用第一配置信息,自动更新feature分支的名称,根据重命名后的feature分支引导代码包的开发。其中,第一配置信息包括应用名称、版本号和功能名称,feature分支的重命名为:feature_版本号_功能名称。
77.进一步说明,应用名称可以表示为目标软件的名称,版本号表示目标软件的版本标识号,功能名称表示为当前业务功能的名称。基于feature分支的重命名,获取对应于重命名的代码包,引导代码包开发。
78.在一种实施例中,任务事项包括提测申请事件,当任务事项为提测申请事件时,任务单为提测单。进一步地,在步骤s405中,利用配置信息,执行当前发布节点的预配置流程的步骤,包括:
79.响应于触发提测申请事件,接收提测单中的第二配置信息;利用第二配置信息,自动建立提测单与目标软件的develop分支的关联关系;根据关联关系,选择所对应的feature分支及其所关联的代码包;将feature分支合并至develop分支中,构成新develop分支;利用新develop分支,对代码包进行编译、代码扫描、单元测试在内的转换操作,以生成代码包对应的软件制品,并将软件制品存储至制品库,执行s3对象存储。在一种实施例中,制品库采用nexus制品仓库。进一步说明,当触发提测申请事件时,表示当前目标功能的代码包已开发完毕,具有完整的对应于目标功能的软件制品。
80.其中,目标软件的目标功能的代码包不局限于一个版本的代码包,本实施例中可以在选择相关配置后,自动获取相关联的feature分支及其对应的代码包,也可以手动调整更换feature分支及其对应的代码包。
81.进一步说明,在其中一发布节点,在将feature分支合并至develop分支中,构成新develop分支的步骤中,若develop分支已存在当前feature分支,则提醒关联的代码开发人员,以表明当前发生feature分支冲突事件。在一种实施例中,可以采用邮件自动发送的方式提醒代码开发人员。本实施例中的代码包所对应的软件制品是一种由源码编译打包生成的二进制文件,不同的开发语言对应着不同格式的二进制文件,该些二进制文件通常可以直接运行在服务器上,用以支撑应用运行。
82.在一种实施例中,任务事项包括一键发布事件,当任务事项为一键发布事件时,任务单为发布单。进一步地,在步骤s405中,利用配置信息,执行当前发布节点的预配置流程的步骤,包括:
83.响应于触发一键发布事件,接收发布单中的第三配置信息;根据第三配置信息,选择待上线的代码包,部署于预设的预发布环境,以进行目标软件的更新;对目标软件进行预发布环境和功能的验证,并在验证通过后,完成代码包所对应目标功能的上线。
84.进一步说明,根据第三配置信息确定目标功能以及待更新的目标软件;选择待上线目标功能的软件制品,利用预设的预发布环境,对目标软件进行更新处理,获取新目标软件,将新目标软件发布至预发布环境中,以进行预发布验证;响应于新目标软件在预发布环境中验证通过后,利用预设的生产环境对新目标软件进行功能验证,并在功能验证通过后,完成目标功能的上线。
85.进一步说明,在一种实施例中,在步骤s405中,利用配置信息,执行当前发布节点的预配置流程的步骤,还包括:
86.将待上线的代码包,部署于预设的预发布环境,对代码包所对应的目标软件进行更新处理,以获取新目标软件;将新目标软件发布至预发布环境中,以进行预发布验证;以及将新目标软件发布至生成环境的各校验设备上,以进行功能验证。在一种实施例中,校验设备可以采用物理机和/或虚拟机。
87.进一步说明,本实施例中的发布单中的第三配置信息包括待上线的目标功能、待更新的目标软件,还包括待执行的sql语句以及待修改的配置数据。
88.进一步说明,根据代码发布指令,生成对应于发布节点的任务事项以及任务单,若选择制品库中历史版本的代码包,各任务事项所对应任务单中的配置信息可以根据历史配置信息自动获取,若采用新开发的代码包,那么各任务事项所对应任务单中的配置信息可以根据自动化设定的配置信息自动填写,可根据实际情况接收开发人员的自动修改设置,比如,新的目标软件在机房的部署设置。本实施例中,当测试环境测试通过后,自动提交发布单,可以再进行审核,以确认目标功能已在测试环境中测试通过,进一步执行sql语言,并进行线上配置数据的修改后,一键发布到预发布环境中,通过预发布环境自动升级目标软件中的jar程序,并编译打包相关应用,以使目标功能更新至目标软件中,形成新目标软件,并将新目标软件发布到预发布环境。
89.对新的目标软件进行预发布环境验证,当验证通过后,一键发布到生产环境,自动将新目标软件同步到生产环境的各校验设备400后,重启新目标软件,并利用预设的提醒方式(比如,邮件提醒),自动提醒相关人员,以便在生产环境中进行功能验证,在验证通过后目标功能所对应的代码包完成发布。
90.进一步说明,响应于触发提测申请事件,执行首次提交提测单时的sql语句的变
更。也就是说,重复提交提测单时,sql语句不会重复执行。进一步在新目标软件发布至预发布环境的步骤之前,执行变更后的sql语句。
91.综上,可以参考附图3所示,控制中心接收代码发布指令后,获取发布节点的任务事项,先判断任务事项的类型。当任务事项为功能新建事件时,提取需求单中的第一配置信息,基于任务事项的类型和develop分支,派生出feature分支,基于需求单中的第一配置信息,建立feature分支与目标功能的代码包的关联关系;当任务事项为提测申请事件时,提取提测单中的第二配置信息,建立提测单与目标软件的develop分支的关联关系,选择所对应的feature分支及其所关联的代码包,将feature分支合并至develop分支中,构成新develop分支,并基于新develop分支,处理代码包,得到软件制品;当任务事项为一键发布事件时,提取发布单中的第三配置信息,选择待发布的软件制品,更新目标软件,得到新目标软件,基于预发布系统,对新目标软件进行验证,基于生产环境,对新目标软件的功能进行验证,当通过所有验证后,新目标软件上线,代码包发布成功。
92.上述代码发布方法中,由于采用了根据版本信息从预设的制品库中搜索目标软件的代码包,通过scp传输至预设的目标环境中,生成代码发布指令;根据代码发布指令,执行代码发布的预配置流程,实现了不受开源工具影响,具备一键发布、历史版本回溯、回滚发布等功能。
93.其中,由于采用了根据代码发布指令,生成对应于发布节点的任务事项以及任务单,以此来控制代码发布流程的节点,进而有效控制代码发布的进程。由于采用了根据任务事项,提取任务单中的配置信息;根据配置信息,确定所处的发布节点,进而执行当前代码发布节点的预配置流程,使得依次完成所有代码发布节点的任务事项后,完成发布目标软件的代码包。因此,从软件未开发到软件存储后的所有流程节点都已得到有效控制,且不受开源工具的限制。由于采用了将发布流程分为多个任务事项,根据目标软件当前的开发进程生成对应的任务事项,比如,已存于制品库的目标软件和未存于制品库的目标软件生成不同发布节点的任务事项。当发布的目标软件出现任何异常时,能够快速找出异常的流程节点,并在找出异常的代码包后,进而执行回滚操作,利用feature分支,选择要回滚的目标环境、目标应用和版本号,自动从制品库搜索指定版本的代码包,并且能够将查询到的代码包通过scp命令传输到目标环境机器上,并按照从配置管理中心读取到的应用配置信息进行软件的部署操作。利用统一的访问界面,具备任务事项的项目管理、代码管理、代码一键代码发布、运维管理等在内的功能;并且在开源工具(例如gitlab、jenkins等)之上提供了一层抽象层,不再受限开源工具,实现统一的管理和日志分析,提高了问题定位的效率;同时降低了运维人员的学习和后期维护成本。
94.应该理解的是,虽然流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
95.在一个实施例中,如图4所示,提供了一种代码发布系统,包括:指令接收模块201、软件搜索模块202、软件部署模块203和流程执行模块204,其中:
96.指令接收模块201,用于接收目标软件的回滚指令,回滚指令至少包括待回滚软件的版本信息;
97.软件搜索模块202,用于根据版本信息,从预设的制品库中搜索目标软件的代码包;
98.软件部署模块203,用于将搜索到的代码包,通过scp传输至预设的目标环境中,生成代码发布指令;
99.流程执行模块204,根据代码发布指令,执行代码发布的预配置流程。
100.关于代码发布系统的具体限定可以参见上文中对于代码发布方法的限定,在此不再赘述。上述代码发布系统中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
101.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储代码发布数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种代码发布方法。
102.本领域技术人员可以理解,图5中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
103.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
104.接收目标软件的回滚指令,回滚指令至少包括待回滚的版本信息;根据版本信息,从预设的制品库中搜索目标软件的代码包;将搜索到的代码包,通过scp传输至预设的目标环境中,生成代码发布指令;根据代码发布指令,执行代码发布的预配置流程。
105.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
106.接收目标软件的回滚指令,回滚指令至少包括待回滚的版本信息;根据版本信息,从预设的制品库中搜索目标软件的代码包;将搜索到的代码包,通过scp传输至预设的目标环境中,生成代码发布指令;根据代码发布指令,执行代码发布的预配置流程。
107.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强
型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
108.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
109.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术专利的保护范围应以所附权利要求为准。

技术特征:
1.一种代码发布方法,其特征在于,所述方法包括:接收目标软件的回滚指令,所述回滚指令至少包括待回滚的版本信息;根据所述版本信息,从预设的制品库中搜索所述目标软件的代码包;将搜索到的所述代码包,通过scp传输至预设的目标环境中,生成代码发布指令;根据所述代码发布指令,执行代码发布的预配置流程。2.根据权利要求1所述的代码发布方法,其特征在于,所述接收目标软件的回滚指令的步骤之前,还包括:利用所述代码发布的预配置流程,制备目标软件的至少一个版本的代码包及其对应的配置信息,并进行相应的存储。3.根据权利要求1所述的代码发布方法,其特征在于,所述根据代码发布指令,执行代码发布的预配置流程的步骤,包括:接收目标软件的代码发布指令;根据所述代码发布指令,生成对应于发布节点的任务事项以及任务单;响应于触发所述任务事项,提取所述任务单中的配置信息;根据所述配置信息,确定当前任务事项所处的发布节点;利用所述配置信息,执行当前所述发布节点的预配置流程,当完成所有所述发布节点的任务事项后,完成发布目标软件的代码包。4.根据权利要求3所述的代码发布方法,其特征在于,所述任务事项包括功能新建事件;当所述任务事项为功能新建事件时,所述任务单为需求单;所述利用配置信息,执行当前所述发布节点的预配置流程的步骤,包括:响应于触发功能新建事件,接收所述需求单中的第一配置信息;根据所述第一配置信息,利用目标软件的develop分支,自动派生出feature分支;利用所述feature分支,引导开发代码包,并建立所述feature分支与所述代码包的关联关系。5.根据权利要求4所述的代码发布方法,其特征在于,所述利用配置信息,执行当前所述发布节点的预配置流程的步骤,还包括:提取所述需求单中的第一配置信息;根据预设的命名规则,利用所述第一配置信息,自动更新所述feature分支的名称,根据重命名后的所述feature分支引导代码包的开发;其中,所述第一配置信息包括应用名称、版本号和功能名称,所述feature分支的重命名为:feature_版本号_功能名称。6.根据权利要求4或5所述的代码发布方法,其特征在于,所述任务事项包括提测申请事件,当所述任务事项为提测申请事件时,所述任务单为提测单;所述利用配置信息,执行当前所述发布节点的预配置流程的步骤,包括:响应于触发提测申请事件,接收所述提测单中的第二配置信息;利用所述第二配置信息,自动建立所述提测单与develop分支的关联关系;根据所述关联关系,选择所对应的feature分支及其所关联的所述代码包;将所述feature分支合并至所述develop分支中,构成新develop分支;利用所述新develop分支,对所述代码包进行编译、代码扫描、单元测试在内的转换操作,以生成代码包对应的软件制品,并将所述软件制品存储至制品库,执行s3对象存储。
7.根据权利要求6所述的代码发布方法,其特征在于,所述任务事项包括一键发布事件,当所述任务事项为一键发布事件时,所述任务单为发布单;所述利用配置信息,执行当前所述发布节点的预配置流程的步骤,包括:响应于触发发布申请事件,接收所述发布单中的第三配置信息;根据所述第三配置信息,选择待上线的代码包,部署于预设的预发布环境,以进行目标软件的更新;对所述目标软件进行所述预发布环境和功能的验证,并在验证通过后,完成代码包所对应目标功能的上线。8.根据权利要求7所述的代码发布方法,其特征在于,所述利用配置信息,执行当前所述发布节点的预配置流程的步骤,还包括:将待上线的代码包,部署于预设的预发布环境,对所述代码包所对应的目标软件进行更新处理,以获取新目标软件;将所述新目标软件发布至所述预发布环境中,以进行预发布验证;以及将所述新目标软件发布至生成环境的各校验设备上,以进行功能验证。9.根据权利要求7所述的代码发布方法,其特征在于,响应于触发提测申请事件,执行首次提交所述提测单时的所述sql语句的变更,并在所述新目标软件发布至所述预发布环境的步骤之前,执行变更后的所述sql语句。10.一种代码发布装置,其特征在于,所述装置包括:指令接收模块,用于接收目标软件的回滚指令,所述回滚指令至少包括待回滚软件的版本信息;软件搜索模块,用于根据所述版本信息,从预设的制品库中搜索所述目标软件的代码包;软件部署模块,用于将搜索到的所述代码包,通过scp传输至预设的目标环境中,生成代码发布指令;流程执行模块,用于根据所述代码发布指令,执行代码发布的预配置流程。

技术总结
本申请涉及一种代码发布方法及装置。所述方法包括:接收目标软件的回滚指令,回滚指令至少包括待回滚的版本信息;根据版本信息,从预设的制品库中搜索目标软件的代码包;将搜索到的代码包,通过SCP传输至预设的目标环境中,生成代码发布指令;根据代码发布指令,执行代码发布的预配置流程。采用本方法能够通过代码发布节点的任务事项有效控制代码发布的进程,并在出现异常时,快速找出异常代码包后,回滚正常的代码包,有效降低运维人员的学习及后期维护成本。维护成本。维护成本。


技术研发人员:王俊平 刘海燕 张连营 陈鑫
受保护的技术使用者:合众新能源汽车股份有限公司
技术研发日:2023.06.25
技术公布日:2023/9/16
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐