CN113821228B - 一种基于分层容器镜像构建ros或类ros项目的方法 - Google Patents
一种基于分层容器镜像构建ros或类ros项目的方法 Download PDFInfo
- Publication number
- CN113821228B CN113821228B CN202111162832.XA CN202111162832A CN113821228B CN 113821228 B CN113821228 B CN 113821228B CN 202111162832 A CN202111162832 A CN 202111162832A CN 113821228 B CN113821228 B CN 113821228B
- Authority
- CN
- China
- Prior art keywords
- images
- image
- source code
- ros
- execution file
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
- G06F8/63—Image based installation; Cloning; Build to order
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本发明涉及一种基于分层容器镜像构建ROS或类ROS项目的方法,属于软件工程领域。该方法执行如下步骤,1)源代码托管;2)分层镜像制作,包括运行时镜像、编译环境镜像、源代码镜像、执行文件镜像;3)自动构建。本发明能只对修改的模块进行编译,对其他的模块不编译或仅作拷贝,极大地节约了构建时长,增加了称功率,因此更方便部署。本发明针对源码托管的约束对工程中的各个模块也做版本号要求,这样单个模块的变化将清晰可见,整个工程的变化也能在源码变化中定位到变动的模块,更便于自动测试。本发明针对特定的应用场景,只需下载相对较小的执行文件镜像,加快批量部署,同时减少无用数据,增加信息安全。
Description
技术领域
本发明涉及一种基于分层容器镜像构建ROS或类ROS项目的方法,属于软件工程领域。
背景技术
通常方法在制作针对大型ROS项目的部署镜像时,全流程构建整个工程并生成一个镜像。这样面临以下弊端,1.编译环境和执行文件同在一个镜像中,单个镜像体积庞大;2.发布的镜像包括编译所需内容,这在运行时是不需要的,浪费用户带宽资源;3.所有可执行文件模块都在一个镜像中,难以针对不同需求拆分,发行不灵活;4.自动构建时,一个模块的变更将引起整个工程的重新构建,浪费算力。
发明内容
本发明要解决的技术问题是:提供提出一种构建ROS或类ROS大型项目时所存在的单个镜像体积庞大、浪费资源、灵活性差和算力浪费的问题。
为了解决上述技术问题,本发明提出的技术方案是:一种基于分层容器镜像构建ROS或类ROS项目的方法,执行如下步骤:
1)源代码托管;
根据所述ROS项目中个模块的版本号,将每个模块代码单独托管于一个分布式版本控制系统中,各模块对应标签依据语义化版本管理标准保持一致;
若存在功能场景基于若干其他模块,则给该功能场景设置独立的版本号,并单独托管于一个分布式版本控制系统中,与该场景相关的其他模块引用为当前分布式版本控制系统的子模块;
2)分层镜像制作,包括运行时镜像、编译环境镜像、源代码镜像、执行文件镜像;
3)自动构建;
自动构建遵从镜像依赖从下至上构建,底层依赖少的镜像优先构建;
当运行时镜像构建时,所有镜像均需重新构建;
当执行文件镜像构建成功时,依赖当前完成构建的执行文件镜像的执行文件镜像需重新构建。
上述方案的进一步改进是:所述运行时镜像,仅安装对应场景运行所需的依赖项;所述编译环境镜像,在所述运行时镜像的基础上安装有同版本的编译所需库;所述源代码镜像,仅包含编译所需的源代码;所述执行文件镜像,由与之对应的源代码镜像内容在编译环境镜像中编译生成。
本发明的有益效果是:本方法能只对修改的模块进行编译,对其他的模块不编译或仅作拷贝,极大地节约了构建时长,增加了称功率,因此更方便部署。本方法针对源码托管的约束对工程中的各个模块也做版本号要求,这样单个模块的变化将清晰可见,整个工程的变化也能在源码变化中定位到变动的模块,更便于自动测试。本方法针对特定的应用场景,只需下载相对较小的执行文件镜像,加快批量部署,同时减少无用数据,增加信息安全。
具体实施方式
实施例一
本实施例的一种基于分层容器镜像构建ROS或类ROS项目的方法,执行如下步骤:
1)源代码托管;
根据所述ROS项目中个模块的版本号,将每个模块代码单独托管于一个分布式版本控制系统中,各模块对应标签依据语义化版本管理标准保持一致;
若存在功能场景基于若干其他模块,则给该功能场景设置独立的版本号,并单独托管于一个分布式版本控制系统中,与该场景相关的其他模块引用为当前分布式版本控制系统的子模块;
2)分层镜像制作,包括运行时镜像、编译环境镜像、源代码镜像、执行文件镜像;
3)自动构建;
自动构建遵从镜像依赖从下至上构建,底层依赖少的镜像优先构建;
当运行时镜像构建时,所有镜像均需重新构建;
当执行文件镜像构建成功时,依赖当前完成构建的执行文件镜像的执行文件镜像需重新构建。
为了配合自动化测试,需要将版本信息写到文件放入有效位置,自动测试成功则将最新的镜像标签成对应的版本号并推送到镜像仓库
运行时镜像:运行时镜像应该仅仅安装对应场景运行所需要的依赖项,做到体积最小。运行时镜像一般仅在所需依赖升级时更新,该镜像的更新将导致其他镜像的连锁更新与重新构建。运行时镜像的每次更新都对应着一个运行时版本号变更。
编译环境镜像:编译环境镜像在运行时镜像的基础上安装有同版本的编译所需库,同样仅在运行时镜像更新时进行更新。编译环境中的运行时版本号沿用其依赖的运行时镜像版本号。
源代码镜像:源码镜像应该只包含编译所需的源代码,放置在镜像中而不在编译时克隆代码主要优势在于避免了账号登陆验证带来的风险和节省了编译时间。源码镜像可以在一个镜像中也可以根据应用场景划分到不同的更小的镜像中。源码镜像版本号为其内部源码的版本号,仅在源码变更时更新。
执行文件镜像:由对应的源码镜像内容在编译环境镜像中编译生成,其版本号使用源代码的版本号,并且镜像中有文件记录着编译环境中的运行时版本号以及源代码版本号。如果镜像中依赖其他已经编译好的相同运行时执行文件镜像,则应该直接拷贝以节约时间。
运行由本实施例的方法所构建好的项目时,运行指定的执行镜像,先需要指定的运行时镜像,启动时先检测运行时版本,匹配才可以后续运行,不匹配则应显示错误并终止运行;
执行的镜像应该是带有版本号标签的测试过的镜像,而非最新的标签这种未经验证的镜像。
由于本方法解决了通常方法的部分弊端,能更容易地实现:
1. 部署到免费的云端构建平台:除了部署私有服务器外,GitHub、GitLab、DockerHub这些在线服务提供商提供了免费的自动构建服务,但这些免费资源有着算力小,服务时长短等诸多限制。采用通常方法动辄构建数小时甚至根本无法成功构建。而本方法能只对修改的模块进行编译,对其他的模块不编译或仅作拷贝,极大地节约了构建时长,增加了称功率。
2. 集成更清晰的版本控制流程:传统版本号针对整个工程,版本更新后难以直接了解是哪个模块发生变化,需要依赖change log文件等外部手段。本方法针对源码托管的约束对工程中的各个模块也做版本号要求,这样单个模块的变化将清晰可见,整个工程的变化也能在源码变化中定位到变动的模块,更便于自动测试。
3. 更灵活的执行文件配置:针对特定的应用场景,只需下载相对较小的执行文件镜像,加快批量部署,同时减少无用数据,增加信息安全。
本发明不局限于上述实施例所述的具体技术方案,除上述实施例外,本发明还可以有其他实施方式。对于本领域的技术人员来说,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等形成的技术方案,均应包含在本发明的保护范围之内。
Claims (1)
1.一种基于分层容器镜像构建ROS或类ROS项目的方法,其特征在于执行如下步骤:
1)源代码托管;
根据所述ROS项目中模块的版本号,将每个模块代码单独托管于一个分布式版本控制系统中,各模块对应标签依据语义化版本管理标准保持一致;
若存在功能场景基于若干其他模块,则给该功能场景设置独立的版本号,并单独托管于一个分布式版本控制系统中,与该场景相关的其他模块引用为当前分布式版本控制系统的子模块;
2)分层镜像制作,包括运行时镜像、编译环境镜像、源代码镜像、执行文件镜像;
3)自动构建;
自动构建遵从镜像依赖从下至上构建,底层依赖少的镜像优先构建;
当运行时镜像构建时,所有镜像均需重新构建;
当执行文件镜像构建成功时,依赖当前完成构建的执行文件镜像的执行文件镜像需重新构建;所述运行时镜像,仅安装对应场景运行所需的依赖项;所述编译环境镜像,在所述运行时镜像的基础上安装有同版本的编译所需库;所述源代码镜像,仅包含编译所需的源代码;所述执行文件镜像,由与之对应的源代码镜像内容在编译环境镜像中编译生成。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111162832.XA CN113821228B (zh) | 2021-09-30 | 2021-09-30 | 一种基于分层容器镜像构建ros或类ros项目的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111162832.XA CN113821228B (zh) | 2021-09-30 | 2021-09-30 | 一种基于分层容器镜像构建ros或类ros项目的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113821228A CN113821228A (zh) | 2021-12-21 |
CN113821228B true CN113821228B (zh) | 2023-07-11 |
Family
ID=78916258
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111162832.XA Active CN113821228B (zh) | 2021-09-30 | 2021-09-30 | 一种基于分层容器镜像构建ros或类ros项目的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113821228B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301950B (zh) * | 2023-05-15 | 2023-08-01 | 北京中诺链捷数字科技有限公司 | Docker镜像生成方法、装置、设备和存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112558981A (zh) * | 2020-12-23 | 2021-03-26 | 上海万向区块链股份公司 | 基于jenkinsfile的自定义编译部署方法及系统 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503895B2 (en) * | 2017-04-11 | 2019-12-10 | Red Hat, Inc. | Runtime non-intrusive container security introspection and remediation |
CN107766126B (zh) * | 2017-11-15 | 2023-01-13 | 腾讯科技(深圳)有限公司 | 容器镜像的构建方法、系统、装置及存储介质 |
CN110399134A (zh) * | 2019-06-28 | 2019-11-01 | 绿漫科技有限公司 | 一种基于容器的快速部署方法及系统 |
CN110543311B (zh) * | 2019-09-05 | 2024-01-23 | 曙光信息产业(北京)有限公司 | 一种镜像构建方法、装置及存储介质 |
CN111399865A (zh) * | 2020-04-21 | 2020-07-10 | 贵州新致普惠信息技术有限公司 | 一种基于容器技术自动构建目标文件的方法 |
CN112835594A (zh) * | 2021-01-15 | 2021-05-25 | 深圳行云创新科技有限公司 | 基于Kubernetes的镜像构建方法及其构建系统 |
-
2021
- 2021-09-30 CN CN202111162832.XA patent/CN113821228B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112558981A (zh) * | 2020-12-23 | 2021-03-26 | 上海万向区块链股份公司 | 基于jenkinsfile的自定义编译部署方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN113821228A (zh) | 2021-12-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10095489B1 (en) | GUI-based application template for containerized application software development | |
US8881139B1 (en) | Legacy application rehosting system | |
CN109885316B (zh) | 基于kubernetes的hdfs-hbase部署方法及装置 | |
US20130174124A1 (en) | Version numbering in single development and test environment | |
US11561784B2 (en) | Versioning of pipeline templates for continuous delivery of services on datacenters configured in cloud platforms | |
US9063819B2 (en) | Extensible patch management | |
CN105550001A (zh) | 分布式自动构建方法及系统 | |
US10248409B1 (en) | Limiting the effects of source code patches on corresponding native-code patches | |
CN111104151B (zh) | 一种基于Shell脚本的Git代码简化的管理方法 | |
CN109240716B (zh) | 一种大数据平台版本管理与快速迭代部署方法及系统 | |
US11392366B1 (en) | Optimized compilation of pipelines for continuous delivery of services on datacenters configured in cloud platforms | |
CN113434158A (zh) | 一种大数据组件的自定义管理方法、装置、设备及介质 | |
US20200257524A1 (en) | Generating interaction libraries | |
AU2012201749A1 (en) | Single development test environment | |
CN113821228B (zh) | 一种基于分层容器镜像构建ros或类ros项目的方法 | |
US20130185709A1 (en) | Installation engine and package format for parallelizable, reliable installations | |
CN111273960A (zh) | 一种实现云原生的mips架构容器云的方法 | |
CN112835568A (zh) | 一种项目构建方法和装置 | |
CN115145604A (zh) | 一种容器化的电力营销系统部署方法 | |
CN114489704A (zh) | 基于策略的版本编译部署方法及装置 | |
CN113791809A (zh) | 应用异常处理方法、装置以及计算机可读存储介质 | |
CA2772225A1 (en) | Version numbering in single development and test environment | |
CN112559006A (zh) | 企业客户端自动升级方法、系统、设备及存储介质 | |
CN114253595A (zh) | 代码仓库管理方法、装置、计算机设备及存储介质 | |
CN115826944A (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 | ||
CB02 | Change of applicant information |
Address after: 210012 room 401-404, building 5, chuqiaocheng, No. 57, Andemen street, Yuhuatai District, Nanjing, Jiangsu Province Applicant after: AUTOCORE INTELLIGENT TECHNOLOGY (NANJING) Co.,Ltd. Address before: 211800 building 12-289, 29 buyue Road, Qiaolin street, Pukou District, Nanjing City, Jiangsu Province Applicant before: AUTOCORE INTELLIGENT TECHNOLOGY (NANJING) Co.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |