CN112732333B - 用于云计算linux操作系统的版本发布方法、装置及电子设备 - Google Patents

用于云计算linux操作系统的版本发布方法、装置及电子设备 Download PDF

Info

Publication number
CN112732333B
CN112732333B CN202110359343.7A CN202110359343A CN112732333B CN 112732333 B CN112732333 B CN 112732333B CN 202110359343 A CN202110359343 A CN 202110359343A CN 112732333 B CN112732333 B CN 112732333B
Authority
CN
China
Prior art keywords
binary
source code
package
binary package
meeting
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.)
Active
Application number
CN202110359343.7A
Other languages
English (en)
Other versions
CN112732333A (zh
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.)
Beijing Easy Star Technology Development Co ltd
Original Assignee
Beijing Easy Star Technology Development 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 Beijing Easy Star Technology Development Co ltd filed Critical Beijing Easy Star Technology Development Co ltd
Priority to CN202110359343.7A priority Critical patent/CN112732333B/zh
Publication of CN112732333A publication Critical patent/CN112732333A/zh
Application granted granted Critical
Publication of CN112732333B publication Critical patent/CN112732333B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/43Checking; Contextual analysis
    • G06F8/433Dependency analysis; Data or control flow analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/447Target code generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • G06F8/63Image based installation; Cloning; Build to order
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances

Landscapes

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

Abstract

本发明公开了一种用于云计算linux操作系统的版本发布方法、装置及电子设备,其中方法包括:获取CentOS中的原始源码包,将原始源码包调整为修正源码包,并在多个平台下将修正源码包编译为二进制包;将所有二进制包划分为满足物理节点需求的二进制包和满足容器镜像需求的二进制包;将满足物理节点需求的二进制包与物理节点仓库对应,并将满足容器镜像需求的二进制包与容器镜像仓库对应;通过koji管理系统将二进制包经过验证和mash工具后,输出二进制包到二进制包对应的仓库;根据仓库中的二进制包建立ISO镜像档并部署环境,实现云计算linux操作系统的版本发布。本发明解决了对操作系统底层数千个软件包编译耗时长且贸然更新仓库影响产品运作的问题。

Description

用于云计算linux操作系统的版本发布方法、装置及电子设备
技术领域
本发明涉及软件技术领域,具体涉及一种用于云计算linux操作系统的版本发布方法、装置及电子设备。
背景技术
对于云计算linux操作系统,在对操作系统的版本发布之前,首先要对底层的软件包设计具有效率的编译流程工具和管理系统。其中,软件包以 RPM (Redhat PackageManagement) 档案的形式存在,可分为源码包和二进制包两种。
然而,云计算linux操作系统往往是由数千个软件包与配置集合而成的 linux 操作环境,要对数千个软件包、专案和代码进行编译是一个极为耗时的大工程。并且,软件包编译完成后,需要放入到软件库中,相关技术中常常将所有软件包全部摆放到同一个软件库中,但在业务上,不同软件包对应的是不同的功能,所满足的也是不同的需求。
此外,相关技术中将软件包放到软件库中时,完全自动化地输出软件包到仓库是有风险的。在真正的业务上,软件包的变动所带来的影响会直接遍布到产品其它组件,因此贸然地自动化更新仓库会大规模地影响产品测试与运作。
发明内容
本发明的主要目的在于提供一种用于云计算linux操作系统的版本发布方法及装置,以解决现有对操作系统底层数千个软件包编译耗时长、具有不同功能的软件包放在同一软件库且贸然更新仓库影响产品运作的问题。
为了实现上述目的,本发明的第一方面提供了一种用于云计算linux操作系统的版本发布方法,包括:
获取CentOS中的原始源码包,将所述原始源码包调整为修正源码包,并在多个平台下将所述修正源码包编译为二进制包;
通过koji管理系统将所有平台下编译完成的所有二进制包划分为满足物理节点需求的二进制包和满足容器镜像需求的二进制包;
将所述满足物理节点需求的二进制包与物理节点仓库对应,并将所述满足容器镜像需求的二进制包与容器镜像仓库对应;
通过koji管理系统将二进制包经过验证和mash工具后,输出所述二进制包到所述二进制包对应的仓库;
根据仓库中的二进制包建立云计算linux 操作系统ISO镜像档并部署环境,以实现云计算linux 操作系统的版本发布。
可选地,所述将所述原始源码包调整为修正源码包,并在多个平台下将所述修正源码包编译为二进制包,包括:
对原始源码包中的代码和/或配置进行调整,以使调整后的原始源码包适配于多个平台;
将调整后的原始源码包打包为修正源码包,并在多个平台下对所述修正源码包进行同步编译;
在每一个平台下,将所述修正源码包并发地编译为二进制包。
进一步地,所述将调整后的原始源码包打包为修正源码包,并在多个平台下对所述修正源码包进行同步编译,包括:
将打包后的所述修正源码包基于其自身的版号制定标准进行命名;
基于koji管理系统的后端分布式编译机制,在多个平台下对所述修正源码包进行同步编译。
进一步地,所述在每一个平台下,将所述修正源码包并发地编译为二进制包,包括:
在每一个平台下,依据编译环境被配置的资源,确定工作进程的数量,其中,编译环境被配置的资源包括CPU内存和存储集群;
将特定数量的工作进程构成进程池,在所述进程池中将修正源码包并发地编译为二进制包,其中,所述二进制包依据版号制定标准进行命名。
可选地,所述通过koji管理系统将二进制包经过验证和mash工具后,输出所述二进制包到所述二进制包对应的仓库,包括:
在mock环境下从koji管理系统的二进制包中选择二进制包,在容器内安装所选择的二进制包,根据安装结果验证所述二进制包在所述二进制包对应的仓库中是否存在依赖问题;
如果不存在依赖问题,则在经过开发者和调整者共同确认后,通过koji管理系统输出二进制包到koji软件库,mash工具获取所述koji软件库中的二进制包并输出二进制包到所述二进制包对应的仓库。
进一步地,如果存在依赖问题,则在mock环境下从koji管理系统的二进制包中重新选择二进制包。
进一步地,所述根据安装结果验证所述二进制包在所述二进制包对应的仓库中是否存在依赖问题包括:
如果安装结果为在容器内安装成功,则不存在依赖问题;
如果安装结果为在容器内安装失败,则存在依赖问题。
本发明的第二方面提供了一种用于云计算linux操作系统的版本发布装置,包括:
编译单元,用于获取CentOS中的原始源码包,将所述原始源码包调整为修正源码包,并在多个平台下将所述修正源码包编译为二进制包;
划分单元,用于通过koji管理系统将所有平台下编译完成的所有二进制包划分为满足物理节点需求的二进制包和满足容器镜像需求的二进制包;
对应单元,用于将所述满足物理节点需求的二进制包与物理节点仓库对应,并将所述满足容器镜像需求的二进制包与容器镜像仓库对应;
输出单元,用于通过koji管理系统将二进制包经过验证和mash工具后,输出所述二进制包到所述二进制包对应的仓库;
版本发布单元,用于根据仓库中的二进制包建立云计算linux 操作系统ISO镜像档并部署环境,以实现云计算linux 操作系统的版本发布。
本发明的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行第一方面任意一项提供的用于云计算linux操作系统的版本发布方法。
本发明的第四方面提供了一种电子设备,所述电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器执行第一方面任意一项提供的用于云计算linux操作系统的版本发布方法。
本发明实施例通过在多个平台下同步编译修正源码包和在每一个平台下并发式编译修正源码包,可以实现在同一时间段内全面地编译软件代码,大幅度提升编译产出的效率,解决了对操作系统底层数千个软件包编译耗时长的问题;
通过将满足不同需求的二进制包存放在不同仓库,使得物理节点 repo 仓库为节点上版本稳定、变化少的软件而准备,容器镜像仓库提供pod中各种程序和服务下会用到的软件,解决了具有不同功能的软件包放在同一软件库产生的问题;
并且,通过在将二进制包输出到仓库之前的验证条件,以免存在依赖问题和不需要的二进制包输出到仓库,避免因更新仓库影响产品的测试和运作,解决了贸然更新仓库影响产品运作和测试的问题;在二进制包从koji管理系统输出到仓库的过程中,通过mash工具的中转实现从koji软件库到yum软件库的转换,以避免产生兼容问题。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的版本发布方法流程图;
图2为本发明一实施例提供的版本发布方法流程示意图;
图3为本发明再一实施例提供的版本发布方法流程示意图;
图4为本发明实施例提供的多个平台下同步编译流程图;
图5为本发明实施例提供的单个平台下并发编译流程图;
图6为本发明又一实施例提供的版本发布方法流程示意图;
图7为本发明实施例提供的版本发布装置框图;
图8为本发明实施例提供的电子设备框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本发明中,术语“上”、“下”、“左”、“右”、“前”、“后”、“顶”、“底”、“内”、“外”、“中”、“竖直”、“水平”、“横向”、“纵向”等指示的方位或位置关系为基于附图所示的方位或位置关系。这些术语主要是为了更好地描述本发明及其实施例,并非用于限定所指示的装置、元件或组成部分必须具有特定方位,或以特定方位进行构造和操作。
并且,上述部分术语除了可以用于表示方位或位置关系以外,还可能用于表示其他含义,例如术语“上”在某些情况下也可能用于表示某种依附关系或连接关系。对于本领域普通技术人员而言,可以根据具体情况理解这些术语在本发明中的具体含义。
此外,术语“安装”、“设置”、“设有”、“连接”、“相连”、“套接”应做广义理解。例如,可以是固定连接,可拆卸连接,或整体式构造;可以是机械连接,或电连接;可以是直接相连,或者是通过中间媒介间接相连,又或者是两个装置、元件或组成部分之间内部的连通。对于本领域普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
云计算linux操作系统往往是由数千个软件包与配置集合而成的 linux 操作环境,要对数千个软件包、专案和代码进行编译是一个极为耗时的大工程。并且,软件包编译完成后,需要放入到软件库中,相关技术中常常将所有软件包全部摆放到同一个软件库中,但在业务上,不同软件包对应的是不同的功能,所满足的也是不同的需求。此外,相关技术中将软件包放到软件库中时,完全自动化地输出软件包到仓库是有风险的,在真正的业务上,软件包的变动所带来的影响会直接遍布到产品其它组件,因此贸然地自动化更新仓库会大规模地影响产品测试与运作。
为了解决上述问题,本发明实施例提供了一种用于云计算linux操作系统的版本发布方法,流程图如图1所示,其中,CentOS为社区企业免费开源操作系统,sourcepackages/rpm为源码包,EasyStack为软件库名称,patch为补丁,features为功能,sourcerpm为源码包,binary rpm为二进制包,软件包按照rpm类型分为源码包和二进制包;mock为高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务;ES Cloud Linux ISO为EasyStack云计算Linux操作系统 ISO镜像档,版本释出即版本发布。
图1中虚线箭头表示软件包之间的相依性或依赖性,例如,如果软件包ssh依赖于软件包ssl,则软件包ssl编译完成后,当软件包ssh进行编译时,由于软件包ssh依赖于软件包ssl,软件包ssl会作为软件包ssh编译时的依赖再次被软件包ssh的编译过程用到,作为软件包ssh编译过程的输入,以使软件包ssh完成编译。
本发明实施例提供了一种用于云计算linux操作系统的版本发布方法,流程示意图如图2所示,该方法包括如下的步骤S101至步骤S105:
步骤S101:获取CentOS中的原始源码包,将所述原始源码包调整为修正源码包,并在多个平台下将所述修正源码包编译为二进制包;
如图3所示,所述步骤S101包括:
步骤S1011:对原始源码包中的代码和/或配置进行调整,以使调整后的原始源码包适配于多个平台;对于从CentOS中获取的原始源码包,在考虑双平台 x86_64 和aarch64 的思路下,可以根据客户对软件包的需求,对原始源码包中的代码进行优化调整,或者对原始源码包中的配置进行优化调整,或者同时对原始源码包中的代码和配置进行优化调整,以期得到满足客户需求的软件包;
所述调整的方式包括对所述原始源码包中的代码和/或配置进行修订,在考虑双平台 x86_64 和 aarch64 的思路下,对原始源码包加补丁;所述调整包括对所述原始源码包进行功能的增加、减少以及修改中的任意一种或多种。为了满足客户对软件包的需求,以打补丁的方式对原始源码包增加功能,此外,还可以进行功能的减少以及修改;在本发明实施例中,可以同时对原始源码包进行功能的增加、减少以及修改中的任意一种或多种。
步骤S1012:将调整后的原始源码包打包为修正源码包,并在多个平台下对所述修正源码包进行同步编译;
步骤S1013:在每一个平台下,将所述修正源码包并发地编译为二进制包。
具体的,所述步骤S1012包括:
将打包后的所述修正源码包基于其自身的版号制定标准进行命名;
基于koji管理系统的后端分布式编译机制,在多个平台下对所述修正源码包进行同步编译。
本发明实施例提供的多个平台下同步编译流程如图4所示,其中,源码即修正源码包,koji build系统即koji管理系统,node 节点,x86_64和aarch64为两种平台架构;基于该koji管理系统,将修正源码包同步编译为双平台x86_64和aarch64的 binary RPM(二进制包),并且,输出软件包到repo(仓库)。
具体的,所述步骤S1013包括:
在每一个平台下,依据编译环境被配置的资源,确定工作进程的数量,其中,编译环境被配置的资源包括CPU内存和存储集群;该存储集群包括硬盘、很多虚拟盘,在单位空间大小的CPU中,当一个工作进程任务完成时,下一工作进程任务依然可以在该单位空间大小的CPU中进行,因此吞吐量大、保证了IO能力达到最高;通过CPU内存和存储集群,以保证存储空间进行并发编译,减少编译时间,提升编译效率。
将特定数量的工作进程构成进程池,在所述进程池中将修正源码包并发地编译为二进制包,以实现各工作进程间负载均衡,其中,所述二进制包依据版号制定标准进行命名。特定数量是指依据编译环境被配置的资源确定出的工作进程的数量,例如,依据CPU内存和存储集群确定出的工作进程的数量为64个,则将64个工作进程构成进程池,特定数量为64个。
该进程池可以以透明的方式管理一批工作进程,各工作进程分别用于编译修正源码包,并且对分配到进程池中的修正源码包进行并发编译时,可以实现负载均衡。
本发明实施例提供的每个平台下并发编译流程如图5所示,其中,A.src.rpm、B.src.rpm、C.src.rpm、D.src.rpm分别为基于其自身的版号制定标准进行命名的修正源码包,works pool为进程池,worker 1、worker 2……worker N分别为各个工作进程;将修正源码包通过并发式程序中各个工作进程进行并发式编译,得出二进制包后,保存至koji管理系统中进行管理。
由于从单个 source RPM(源码包)可能会编译出多个 binary RPM(二进制包),故在此系统中,每个软件包都遵守着RPM所制定的标准,正确提供 Name-Version-Release(NVR) 的版号制定;
当对软件包的代码或配置进行调整时,所重新打包的 source RPM 也依据标准bump version,如此可确保同一个版号的 source RPM 与 binary RPM 文档是一一对应的,不会出现同样的 RPM 文档名称但实际上却有不同的代码实现,可以避免在产品中软件版本混淆不清的问题;其中,bump version 是一个小型的命令行工具,用于简化应用发布时的版本控制,可以根据命令升级版本号、自动替换项目相关文件中的版本信息、自动创建一次Git提交并且为这一次Git提交打上版本升级的标签。
步骤S102:通过koji管理系统将所有平台下编译完成的所有二进制包划分为满足物理节点需求的二进制包和满足容器镜像需求的二进制包;将二进制包按照功能划分,可分为满足物理节点需求的二进制包和满足容器镜像需求的二进制包;
具体的,步骤S102中,所述满足物理节点需求的二进制包包括主机需要安装的二进制包;所述满足容器镜像需求的二进制包包括容器内部需要安装的二进制包。
其中,所述满足物理节点需求的二进制包的版本比所述满足容器镜像需求的二进制包的版本稳定且变化少;所述满足物理节点需求的二进制包的版本比所述满足容器镜像需求的二进制包的版本较为可控。
所述满足容器镜像需求的二进制包的版本比所述满足物理节点需求的二进制包的版本变化多,并且,所述满足容器镜像需求的二进制包依据容器镜像的需求,需要特定的版本。
此外,还通过koji管理系统管理所有平台下编译完成的所有二进制包,包括:
通过koji管理系统保存软件包,其中,软件包按照rpm类型分为源码包和二进制包,源码包包括原始源码包和修正源码包;
通过koji管理系统的web 界面查看软件包信息,并单独下载软件包,以进行试验和开发;
通过编程接口批量处理软件包,其中,批量处理包括批量标记、临时编译、批量删除和批量导出到仓库;批量标记可以是批量为软件包打tag标签,对已被标记、已被打标签的批量软件包执行批量删除和批量导出到软件库的操作,并且,由于通过koji管理系统编译时,koji管理系统会认定存在软件包的调整,会更改版本号,因此,当编译不涉及软件包的调整时,不通过koji管理系统进行编译,而是通过编程接口对软件包进行临时编译,可以达到在不更改版本号的情况下实现对软件包的编译。
步骤S103:将所述满足物理节点需求的二进制包与物理节点仓库对应,并将所述满足容器镜像需求的二进制包与容器镜像仓库对应;预先配置好物理节点仓库,用于与满足物理节点需求的二进制包对应,并预先配置好容器镜像仓库,用于与满足容器镜像需求的二进制包对应。
步骤S104:通过koji管理系统将二进制包经过验证和mash工具后,输出所述二进制包到所述二进制包对应的仓库;
如图6所示,所述步骤S104包括:
步骤S1041:在mock环境下从koji管理系统的二进制包中选择二进制包,在容器内安装所选择的二进制包,根据安装结果验证所述二进制包在所述二进制包对应的仓库中是否存在依赖问题;
步骤S1042:如果不存在依赖问题,则在经过开发者和调整者共同确认后,通过koji管理系统输出二进制包到koji软件库,mash工具获取所述koji软件库中的二进制包并输出二进制包到所述二进制包对应的仓库。利用koji管理系统将koji管理系统中的二进制包输出到koji软件库,mash工具获取koji软件库中的二进制包后,将二进制包输出到该二进制包对应的yum软件库即repo仓库中;将不同功能的二进制包输出到不同的仓库中,例如,如果该二进制包为满足物理节点需求的二进制包,则输出到物理节点仓库中,如果该二进制包为满足容器镜像需求的二进制包,则输出到容器镜像仓库中。由于repo仓库需要满足yum兼容,因此,在软件包从koji管理系统输出到仓库的过程中,通过mash工具的中转实现从koji软件库到yum软件库的转换,以避免产生兼容问题。
如果存在依赖问题,则在mock环境下从koji管理系统的二进制包中重新选择二进制包。
具体的,所述步骤S1041包括:
如果安装结果为在容器内安装成功,则不存在依赖问题;如果安装成功,则说明仓库中包含二进制包的所有依赖关系,即仓库中包含该二进制包依赖的所有二进制包,因此不存在依赖问题;
如果安装结果为在容器内安装失败,则存在依赖问题。如果安装失败,则说明仓库中不包含二进制包的所有依赖关系,即该二进制包依赖的所有二进制包并不全在仓库中,因此存在依赖问题。
步骤S105:根据仓库中的二进制包建立云计算linux 操作系统ISO镜像档并部署环境,以实现云计算linux 操作系统的版本发布。
根据物理节点仓库中满足物理节点需求的二进制包,和容器镜像仓库中满足容器镜像需求的二进制包,建立可安装的云计算linux 操作系统ISO镜像档并部署环境,以实现云计算linux 操作系统的版本发布。
从以上的描述中,可以看出,本发明实现了如下技术效果:
(1)本发明实施例通过在多个平台下同步编译修正源码包和在每一个平台下并发式编译修正源码包,可以实现在同一时间段内全面地编译软件代码,大幅度提升编译产出的效率;
(2)引入koji管理系统管理大量软件包,每个软件包都遵守着RPM所制定的标准,正确提供 Name-Version-Release(NVR) 的版号制定,可确保同一个版号的 source RPM与 binary RPM 文档是一一对应的,不会出现同样的 RPM 文档名称但实际上却有不同的代码实现,可以避免在产品中软件版本混淆不清的问题;
(3)由于repo仓库需要满足yum兼容,因此,在软件包从koji管理系统输出到仓库的过程中,通过mash工具的中转实现从koji软件库到yum软件库的转换,以避免产生兼容问题;
(4)通过将满足不同需求的软件包存放在不同仓库,使得物理节点 repo 仓库为节点上版本稳定、变化少的软件而准备,容器镜像仓库提供pod中各种程序和服务下会用到的软件;
(5)通过在将软件包输出到仓库之前的验证条件,以免存在依赖问题和不需要的软件包输出到仓库,避免因更新仓库影响产品的测试和运作。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本发明实施例还提供了一种用于实施上述用于云计算linux操作系统的版本发布方法的用于云计算linux操作系统的版本发布装置,如图7所示,该装置包括:
编译单元71,用于获取CentOS中的原始源码包,将所述原始源码包调整为修正源码包,并在多个平台下将所述修正源码包编译为二进制包;
划分单元72,用于通过koji管理系统将所有平台下编译完成的所有二进制包划分为满足物理节点需求的二进制包和满足容器镜像需求的二进制包;
对应单元73,用于将所述满足物理节点需求的二进制包与物理节点仓库对应,并将所述满足容器镜像需求的二进制包与容器镜像仓库对应;
输出单元74,用于通过koji管理系统将二进制包经过验证和mash工具后,输出所述二进制包到所述二进制包对应的仓库;
版本发布单元75,用于根据仓库中的二进制包建立云计算linux 操作系统ISO镜像档并部署环境,以实现云计算linux 操作系统的版本发布。
本发明实施例还提供了一种电子设备,如图8所示,该电子设备包括一个或多个处理器81以及存储器82,图8中以一个处理器81为例。
该控制器还可以包括:输入装置83和输出装置84。
处理器81、存储器82、输入装置83和输出装置84可以通过总线或者其他方式连接,图8中以通过总线连接为例。
处理器81可以为中央处理器(Central Processing Unit,简称为CPU),处理器81还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,简称为DSP)、专用集成电路(Application Specific Integrated Circuit,简称为ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称为FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合,通用处理器可以是微处理器或者任何常规的处理器。
存储器82作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的控制方法对应的程序指令/模块。处理器81通过运行存储在存储器82中的非暂态软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例的用于云计算linux操作系统的版本发布方法。
存储器82可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据服务器操作的处理装置的使用所创建的数据等。此外,存储器82可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器82可选包括相对于处理器81远程设置的存储器,这些远程存储器可以通过网络连接至网络连接装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
输入装置83可接收输入的数字或字符信息,以及产生与服务器的处理装置的用户设置以及功能控制有关的键信号输入。输出装置84可包括显示屏等显示设备。
一个或者多个模块存储在存储器82中,当被一个或者多个处理器81执行时,执行如图2所示的方法。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成的,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各电机控制方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,简称为ROM)、随机存储记忆体(Random AccessMemory,简称为RAM)、快闪存储器(Flash Memory,简称为FM)、硬盘(Hard Disk Drive,简称为HDD)或固态硬盘(Solid-State Drive,简称为SSD)等;存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施方式,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。

Claims (10)

1.一种用于云计算linux操作系统的版本发布方法,其特征在于,包括:
获取CentOS中的原始源码包,将所述原始源码包调整为修正源码包,并在多个平台下将所述修正源码包编译为二进制包;
通过koji管理系统将所有平台下编译完成的所有二进制包划分为满足物理节点需求的二进制包和满足容器镜像需求的二进制包;
将所述满足物理节点需求的二进制包与物理节点仓库对应,并将所述满足容器镜像需求的二进制包与容器镜像仓库对应;
通过koji管理系统将二进制包经过验证和mash工具后,输出所述二进制包到所述二进制包对应的仓库;
根据仓库中的二进制包建立云计算linux 操作系统ISO镜像档并部署环境,以实现云计算linux 操作系统的版本发布;
所述获取CentOS中的原始源码包,将所述原始源码包调整为修正源码包,并在多个平台下将所述修正源码包编译为二进制包,包括:
在多个平台下同步编译修正源码包和在每一个平台下并发式编译修正源码包;
所述通过koji管理系统将二进制包经过验证和mash工具后,输出所述二进制包到所述二进制包对应的仓库,包括:
在mock环境下从koji管理系统的二进制包中选择二进制包,在容器内安装所选择的二进制包,根据安装结果验证所述二进制包在所述二进制包对应的仓库中是否存在依赖问题;
如果不存在依赖问题,则在经过开发者和调整者共同确认后,通过koji管理系统输出二进制包到koji软件库,mash工具获取所述koji软件库中的二进制包并输出二进制包到所述二进制包对应的仓库;
其中,所述满足物理节点需求的二进制包包括主机需要安装的二进制包,所述满足容器镜像需求的二进制包包括容器内部需要安装的二进制包;
所述满足物理节点需求的二进制包的版本比所述满足容器镜像需求的二进制包的版本稳定且变化少,所述满足物理节点需求的二进制包的版本比所述满足容器镜像需求的二进制包的版本较为可控;
所述满足容器镜像需求的二进制包的版本比所述满足物理节点需求的二进制包的版本变化多,并且,所述满足容器镜像需求的二进制包依据容器镜像的需求,需要特定的版本。
2.根据权利要求1所述的方法,其特征在于,所述将所述原始源码包调整为修正源码包,并在多个平台下将所述修正源码包编译为二进制包,包括:
对原始源码包中的代码和/或配置进行调整,以使调整后的原始源码包适配于多个平台;
将调整后的原始源码包打包为修正源码包,并在多个平台下对所述修正源码包进行同步编译;
在每一个平台下,将所述修正源码包并发地编译为二进制包。
3.根据权利要求2所述的方法,其特征在于,所述将调整后的原始源码包打包为修正源码包,并在多个平台下对所述修正源码包进行同步编译,包括:
将打包后的所述修正源码包基于其自身的版号制定标准进行命名;
基于koji管理系统的后端分布式编译机制,在多个平台下对所述修正源码包进行同步编译。
4.根据权利要求2所述的方法,其特征在于,所述在每一个平台下,将所述修正源码包并发地编译为二进制包,包括:
在每一个平台下,依据编译环境被配置的资源,确定工作进程的数量,其中,编译环境被配置的资源包括CPU内存和存储集群;
将特定数量的工作进程构成进程池,在所述进程池中将修正源码包并发地编译为二进制包,其中,所述二进制包依据版号制定标准进行命名。
5.根据权利要求1所述的方法,其特征在于,所述通过koji管理系统将二进制包经过验证和mash工具后,输出所述二进制包到所述二进制包对应的仓库,包括:
在mock环境下从koji管理系统的二进制包中选择二进制包,在容器内安装所选择的二进制包,根据安装结果验证所述二进制包在所述二进制包对应的仓库中是否存在依赖问题;
如果不存在依赖问题,则在经过开发者和调整者共同确认后,通过koji管理系统输出二进制包到koji软件库,mash工具获取所述koji软件库中的二进制包并输出二进制包到所述二进制包对应的仓库。
6.根据权利要求5所述的方法,其特征在于,如果存在依赖问题,则在mock环境下从koji管理系统的二进制包中重新选择二进制包。
7.根据权利要求5所述的方法,其特征在于,所述根据安装结果验证所述二进制包在所述二进制包对应的仓库中是否存在依赖问题包括:
如果安装结果为在容器内安装成功,则不存在依赖问题;
如果安装结果为在容器内安装失败,则存在依赖问题。
8.一种用于云计算linux操作系统的版本发布装置,其特征在于,包括:
编译单元,用于获取CentOS中的原始源码包,将所述原始源码包调整为修正源码包,并在多个平台下将所述修正源码包编译为二进制包;
划分单元,用于通过koji管理系统将所有平台下编译完成的所有二进制包划分为满足物理节点需求的二进制包和满足容器镜像需求的二进制包;
对应单元,用于将所述满足物理节点需求的二进制包与物理节点仓库对应,并将所述满足容器镜像需求的二进制包与容器镜像仓库对应;
输出单元,用于通过koji管理系统将二进制包经过验证和mash工具后,输出所述二进制包到所述二进制包对应的仓库;
版本发布单元,用于根据仓库中的二进制包建立云计算linux 操作系统ISO镜像档并部署环境,以实现云计算linux 操作系统的版本发布;
所述获取CentOS中的原始源码包,将所述原始源码包调整为修正源码包,并在多个平台下将所述修正源码包编译为二进制包,包括:
在多个平台下同步编译修正源码包和在每一个平台下并发式编译修正源码包;
所述通过koji管理系统将二进制包经过验证和mash工具后,输出所述二进制包到所述二进制包对应的仓库,包括:
在mock环境下从koji管理系统的二进制包中选择二进制包,在容器内安装所选择的二进制包,根据安装结果验证所述二进制包在所述二进制包对应的仓库中是否存在依赖问题;
如果不存在依赖问题,则在经过开发者和调整者共同确认后,通过koji管理系统输出二进制包到koji软件库,mash工具获取所述koji软件库中的二进制包并输出二进制包到所述二进制包对应的仓库;
其中,所述满足物理节点需求的二进制包包括主机需要安装的二进制包,所述满足容器镜像需求的二进制包包括容器内部需要安装的二进制包;
所述满足物理节点需求的二进制包的版本比所述满足容器镜像需求的二进制包的版本稳定且变化少,所述满足物理节点需求的二进制包的版本比所述满足容器镜像需求的二进制包的版本较为可控;
所述满足容器镜像需求的二进制包的版本比所述满足物理节点需求的二进制包的版本变化多,并且,所述满足容器镜像需求的二进制包依据容器镜像的需求,需要特定的版本。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,所述计算机指令用于使所述计算机执行权利要求1-7任意一项所述的用于云计算linux操作系统的版本发布方法。
10.一种电子设备,其特征在于,所述电子设备包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的计算机程序,所述计算机程序被所述至少一个处理器执行,以使所述至少一个处理器执行权利要求1-7任意一项所述的用于云计算linux操作系统的版本发布方法。
CN202110359343.7A 2021-04-02 2021-04-02 用于云计算linux操作系统的版本发布方法、装置及电子设备 Active CN112732333B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110359343.7A CN112732333B (zh) 2021-04-02 2021-04-02 用于云计算linux操作系统的版本发布方法、装置及电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110359343.7A CN112732333B (zh) 2021-04-02 2021-04-02 用于云计算linux操作系统的版本发布方法、装置及电子设备

Publications (2)

Publication Number Publication Date
CN112732333A CN112732333A (zh) 2021-04-30
CN112732333B true CN112732333B (zh) 2021-07-13

Family

ID=75596341

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110359343.7A Active CN112732333B (zh) 2021-04-02 2021-04-02 用于云计算linux操作系统的版本发布方法、装置及电子设备

Country Status (1)

Country Link
CN (1) CN112732333B (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129381A (zh) * 2011-03-14 2011-07-20 兰雨晴 一种定制linux操作系统的方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8352935B2 (en) * 2005-05-19 2013-01-08 Novell, Inc. System for creating a customized software distribution based on user requirements
CN102035892A (zh) * 2010-12-23 2011-04-27 中科方德软件有限公司 操作系统版本自动发布和软件包自动更新的系统及方法
CN102118500B (zh) * 2010-12-27 2013-08-21 清华大学 移动终端开源操作系统基于软件包的在线自动更新方法
CN111399847A (zh) * 2020-03-17 2020-07-10 成都千立网络科技有限公司 一种可跨硬件平台移植的业务系统
CN111651168A (zh) * 2020-05-13 2020-09-11 无锡江南计算技术研究所 一种面向云原生应用场景的操作系统定制方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102129381A (zh) * 2011-03-14 2011-07-20 兰雨晴 一种定制linux操作系统的方法

Also Published As

Publication number Publication date
CN112732333A (zh) 2021-04-30

Similar Documents

Publication Publication Date Title
US20210406079A1 (en) Persistent Non-Homogeneous Worker Pools
CN111492347B (zh) 用于更新容器的系统和方法
CN107577475B (zh) 一种数据中心集群系统的软件包管理方法及系统
US8762986B2 (en) Advanced packaging and deployment of virtual appliances
US8578371B2 (en) Software distribution method and system with automatic prerequisite installation
US8464246B2 (en) Automation of mainframe software deployment
US11403146B2 (en) Method, apparatus, and server for managing image across cloud servers
US10754708B2 (en) Orchestrator and console agnostic method to deploy infrastructure through self-describing deployment templates
US20210117182A1 (en) Container based application reification
US9880882B2 (en) Multi-tenant SaaS platform and method for automated deployment of connector application, and tenant and service provider using virtual machine
US11528186B2 (en) Automated initialization of bare metal servers
KR20060045811A (ko) 효과적 패칭
US10929115B2 (en) Distribution and execution of instructions in a distributed computing environment
CN110647470A (zh) 测试方法和制作方法、装置、介质以及电子设备
US20140130031A1 (en) Loading remote binaries onto a write-protected device
US11853788B2 (en) Managed virtual appliances
US11750451B2 (en) Batch manager for complex workflows
CN112732285A (zh) 适用于云计算linux操作系统的升级方法、装置及电子设备
CN112732333B (zh) 用于云计算linux操作系统的版本发布方法、装置及电子设备
US20230359450A1 (en) Cloud application engine deployment method for shielding web framework from users and apparatus, device and storage medium thereof
CN113204347A (zh) 适用于软件包的处理方法、装置及电子设备
CN109660575B (zh) Nfv业务部署的实现方法和装置
CN111198694A (zh) 软件的安装方法及装置
CN115016862A (zh) 基于Kubernetes集群的软件启动方法、装置、服务器及存储介质
Tak et al. Appcloak: Rapid migration of legacy applications into cloud

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
GR01 Patent grant
GR01 Patent grant