CN114461182A - 流水线构建的方法、装置、电子设备及计算机可读存储介质 - Google Patents

流水线构建的方法、装置、电子设备及计算机可读存储介质 Download PDF

Info

Publication number
CN114461182A
CN114461182A CN202210121945.3A CN202210121945A CN114461182A CN 114461182 A CN114461182 A CN 114461182A CN 202210121945 A CN202210121945 A CN 202210121945A CN 114461182 A CN114461182 A CN 114461182A
Authority
CN
China
Prior art keywords
image
builder
source code
script
pipeline
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
CN202210121945.3A
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.)
Jiangsu Anchao Cloud Software Co Ltd
Original Assignee
Jiangsu Anchao Cloud Software 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 Jiangsu Anchao Cloud Software Co Ltd filed Critical Jiangsu Anchao Cloud Software Co Ltd
Priority to CN202210121945.3A priority Critical patent/CN114461182A/zh
Publication of CN114461182A publication Critical patent/CN114461182A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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/45562Creating, deleting, cloning virtual machine instances

Abstract

本申请提供流水线构建的方法,包括:获取S2I相关的构建器镜像;获取业务应用对应的源代码;接收S2I创建指令,并运行S2I创建指令以根据构建器镜像和源代码,生成业务镜像;利用Tekton生成定制任务,并根据定制任务调用业务镜像以集成目标流水线。本申请通过S2I开发脚本实现特定环境的镜像打包,通过定制Tekton的任务,能够集成Tekton的云原生的流水线,通过Tekton与S2I的结合,实现高级的自定义镜像制作和发布方案,满足用户可分享和易用性的要求。此外,本申请还提供流水线构建的装置。

Description

流水线构建的方法、装置、电子设备及计算机可读存储介质
技术领域
本申请涉及云计算领域,具体涉及互联网业务效能领域,尤其是涉及流水线构建的方法、装置、电子设备及计算机可读存储介质。
背景技术
随着Kubernetes的日趋成熟,基于该“操作系统”之上构建的适用于不同场景的应用将成为新的发展方向。云已经可以为我们提供稳定可以唾手可得的基础设施,而Kubernetes的出现则能够解决应用上云(云原生应用)这个难题。基于Kubernetes的云原生(Cloud Native)技术帮助企业和机构在公有云、私有云和混合云等新型动态环境中构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式API等,以上这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。
云原生技术蓬勃发展,越来越多的系统迁移到原生平台上来,对应的生态工具也逐步完善,这其中就包括持续集成Continuous Integration(CI)和持续交付ContinuousDelivery(CD)的CI/CD工具。CI/CD(CI&CD)工具有很多,在IaaS环境下应用最多、较为著名的是Jenkins。而随着云原生的理念以及使用方式的改变,新一代的CI/CD工具正在崛起。
中国专利申请CN202010317612.9公开了一种基于参数配置的流水线构建方法,其包括:编写插件工程;配置插件工程;编辑流程;选择插件;构建单一步骤;构建全部步骤。该方案不需要学习编写shell脚本,就可以编辑一个CI&CD的流水线。然而,该技术方案并非不是云原生的实现方式,而且主要强调图形化和易用性,没有强调可分享。
中国专利申请CN202110643782.0公开了一种持续集成方法:响应于用户发送的流水线编排指令,确定与流水线编排执行对应的编排模板;将编排模板向用户进行展示,以获取用户基于编排模板反馈的编辑信息;基于编辑信息,对编排模板进行处理,得到目标模板,并基于目标模板生成配置文件;运行配置文件,以得到与配置文件对应的流水线作业,并使用调度器为流水线作业分配执行节点;将流水线作业发送至为其分配的执行节点,触发执行节点执行流水线作业,进而完成与流水线编排执行所对应的软件的持续集成。该技术方案仍然是基于传统方式的基本流水线编排方法,即同样并非云原生的实现方式,而且该方案的易用性欠缺。
基于此,有必要对现有流水线实现方法进行改进。
发明内容
本申请的目的在于提供云原生的流水线实现方法,以满足用户可分享和易用性的要求。
本申请的目的采用以下技术方案实现:
第一方面,提供流水线构建的方法,包括:获取S2I相关的构建器镜像;获取业务应用对应的源代码;接收S2I创建指令,并运行S2I创建指令以根据构建器镜像和所述源代码,生成业务镜像;利用Tekton生成一个或多个定制任务,并根据定制任务调用业务镜像以集成目标流水线。有益效果为:利用S2I能够在实际的项目快速部署上线、微服务改造的过程中,极大地赋能开发者和运维用户;S2I无需编写一行Dockerfile,降低学习成本的同时提升发布效率,使用户能够更好地专注在业务本身;采用tekton云原生的方式,更容易做CICD定制内容的分发;基于kubernetes环境下Tekton pipeline工具和自定义的镜像制作工具S2I结合,来实现一种新的打包和发布方式,满足用户在可定制化和可扩展等方面的需求。
在一些可选的实施例中,根据所述构建器镜像和所述源代码,生成业务镜像包括:获取S2I脚本;将S2I脚本和源代码流式传输到构建器映像容器中,构建器映像容器中包含构建器镜像;运行S2I脚本,以生成业务镜像。有益效果为:S2I能够允许用户直接输入源代码然后打包成可运行程序到Docker镜像的工具,在用户不需要了解Dockerfile的情况下方便构建镜像,通过将源代码放入一个负责编译源代码的Builder image中,自动将编译后的代码打包成Docker镜像。S2I可以实现很复杂的操作逻辑,而不会创建新的镜像层,具有速度快的特点;在构建过程中,S2I不允许运行任意的yum install命令,以防止降低开发迭代速度,运行高效;S2I鼓励一个共享镜像生态。从而业务应用可以实现最佳实践,利于生态构建。
在一些可选的实施例中,S2I脚本包括assemble脚本,将S2I脚本和源代码流式传输到构建器映像容器中包括:根据构建器镜像运行云容器,并将源代码注入到默认目录中;执行assemble脚本,将源代码从默认目录转移到工作目录下,并将源代码构建成可直接运行的应用程序。在一些可选的实施例中,S2I脚本还包括run脚本,方法还包括:将run脚本设置为启动云容器的镜像入口点,并提交新的构建器镜像。有益效果为:S2I开发assemble和run脚本,能够实现特定环境的镜像打包。
在一些可选的实施例中,assemble脚本通过定制方式确定:python pip安装依赖包;执行源代码的设定基础初始化内容。在一些可选的实施例中,run脚本通过定制方式确定:设置Web框架运行参数;确定Web服务器的种类,并启动S2I创建。有益效果为:用户也可以使用自己的自定义脚本扩展S2I。这些build er image包含生成该可执行最终镜像所需的特定脚本依赖。
在一些可选的实施例中,根据定制任务调用业务镜像以集成目标流水线包括:根据定制任务设置参数,以确定指定的构建器镜像和指定的源代码路径;根据指定的构建器镜像和指定的源代码路径调用业务镜像;将业务镜像推送到镜像仓库以形成流水线。有益效果为:提供一种定制化非常强的、应对复杂需求的容器镜像构建方法;结合云原生的流水线实现方式,可以做到完全在kubernetes环境下解决CI/CD部署,提高解决企业运维和开发效率协同的问题
第二方面,提供一种流水线构建的装置,包括:源代码获取模块,用于获取业务应用对应的源代码;业务镜像生成模块,用于获取S2I相关的构建器镜像,接收S2I创建指令,并运行所述S2I创建指令以根据所述构建器镜像和所述源代码,生成业务镜像;目标流水线生成模块,用于利用Tekton生成一个或多个定制任务,并根据所述定制任务调用所述业务镜像以集成目标流水线。
第三方面,本申请提供了一种电子设备,所述电子设备包括存储器、处理器以及用于执行任务的硬件模组,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现:获取S2I相关的构建器镜像;获取业务应用对应的源代码;接收S2I创建指令,并运行S2I创建指令以根据构建器镜像和所述源代码,生成业务镜像;利用Tekton生成一个或多个定制任务,并根据定制任务调用业务镜像以集成目标流水线。
第四方面,本申请提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项方法的步骤。
附图说明
下面结合附图和实施例对本申请进一步说明。
图1是本申请实施例提供的一种流水线构建的流程示意图;
图2是本申请实施例提供的一种构建器镜像的构建流程示意图;
图3是本申请实施例提供的一种集成目标流水线流程示意图;
图4是本申请实施例提供的一种生成业务镜像流程示意图;
图5是本申请实施例提供的一种业务镜像生成的示意图;
图6是本申请实施例提供的另一种集成目标流水线流程示意图;
图7是本申请实施例提供的一种流水线构建的装置的结构示意图;
图8是本申请实施例提供的一种业务镜像生成模块的结构示意图;
图9是本申请实施例提供的一种目标流水线生成模块的结构示意图
图10是本申请实施例提供的一种电子设备的结构示意图;
图11是本申请实施例提供的一种用于实现流水线构建的程序产品的结构示意图。
具体实施方式
如下将参考如附图中所示的本教导的示例性实施例更详细地描述本教导。虽然结合各种实施例和示例描述了本教导,但本教导并不旨在限于这些实施例。相反,如本领域技术人员将认识到的,本教导包含各种替代、修改和等同物。能够访问本文中的教导的本领域普通技术人员将认识到在本文所述的本公开的范围内的附加实施方式、修改和实施例以及其它使用领域。
说明书中对“一个实施例”或“实施例”的引用是指结合实施例描述的特定特征、结构或特点包括在教导的至少一个实施例中。说明书中各处出现的短语“在一个实施例中”不一定都指同一个实施例。应当理解的是,本教导的方法的各个步骤可以以任何次序和/或同时执行,只要教导保持可操作即可。此外,应当理解的是,本教导的装置和方法可以包括任何数量或所有所描述的实施例,只要教导保持可操作即可。
下面,结合附图以及具体实施方式,对本申请做进一步描述,需要说明的是,在不相冲突的前提下,以下描述的各实施例之间或各技术特征之间可以任意组合形成新的实施例。
参见图1,本申请实施例提供了一种流水线构建的方法,该方法包括步骤S101~S104。上述流水线构建的方法可以在包括虚拟机、服务器、台式机、膝上型计算机和手持设备等任何计算平台上运行,该计算平台可以是专用的或共享的。
步骤S101,获取S2I相关的构建器镜像。
步骤S102,获取业务应用对应的源代码。可选的,业务应用对应的源代码可通过用户输入源代码仓库的地址实现。用户选择S2I构建的基础镜像(又称为Builder镜像)。OpenShift默认提供了多种编程语言的Builder镜像,如Java、PHP、Ruby、Python、Perl等,用户可以根据自身需求定制自己的Builder镜像,并发布到服务目录中供用户选用。
步骤S103,接收S2I创建指令,并运行S2I创建指令以根据构建器镜像和源代码,生成业务镜像。可选的,通过自定义模板,可以创建业务应用发布时的快速部署模板。包括业务应用所需的多个Build Config、Deployment Config、Ser vice及Route等对象。用户可以在OpenShiftTemplate中定义参数,这些参数在用户部署模板时将显示在Web控制台的界面上,供用户输入。用户的输入最终以环境变量的方式传递到容器内部。
步骤S104,利用Tekton生成一个或多个定制任务,并根据定制任务调用业务镜像以集成目标流水线。
示例性的,源到镜像(Source-To-Image,S2I)作为一个独立工具,能够将应用程序源转换为可执行的Dockerimage,后续能够在OpenShift内部运行或直接通过docker run。S2I项目包含许多常用的builder image(构建器镜像),例如Python或Ruby,当然用户也可以使用自己的自定义脚本扩展S2I。这些build er image包含生成该可执行最终镜像所需的特定脚本依赖。S2I使用业务应用对应的源代码和builder image生成一个新的Docker映像。
本申请实施例中,考虑到用户开发的业务代码可能千变万化,但同一语言的运行环境,基本差异不大,用户的镜像就是源代码加运行环境。通过为S2I开发assemble和run脚本,实现特定环境的镜像打包;定制Tekton的任务,以便集成Tekton的流水线pipleline。通过使用S2I能够在实际的项目快速部署上线、微服务改造的过程中,极大地赋能开发者和运维用户;S2I无需编写一行Dockerfile,降低学习成本的同时提升发布效率,使用户能够更好地专注在业务本身;采用tekton云原生的方式,更容易做CI/CD定制内容的分发;通过Tekton与S2I的结合,实现高级的自定义镜像制作和发布技术。
在一个实施例中,构建器镜像的构建过程可包括:
步骤S201,准备builder image的上下文环境,创建所有必要的依赖构件。可选的,S2I附带有一个命令,该命令为构建器镜像引导所需的目录结构。在此实施例中,该命令的执行能够调用S2I create传递构建器镜像的将来名称和应在其中创建依赖构件的目录。可选的,如果目录不存在,计算机将自动创建依赖构件的目录。可选的,依赖构件的目录可包括:Dockerfile、Makefile、run脚本、assemble脚本、save-artifacts、usage。其中,Dockerfile用于在其中定义构建器映像;Makefile用于构建和测试构建器映像的帮助脚本;run脚本在测试阶段能够测试构建器映像是否正常工作,或者在S2I中负责运行业务应用对应的源代码的脚本;assemble脚本为S2I中负责构建业务应用程序的脚本;save-artifacts负责增量构建的脚本;usage负责打印构建器图像用法的脚本。可选的,依赖构件创建的同时,还可执行包含构建和运行业务应用程序所需的所有必需的库和工具的步骤。示例性的,Tomcat构建器映像将安装Tomcat,JDK和Mav en,而Python构建器映像具有Gunicorn或Cherry.py,SciPy二进制文件和pi p。
步骤S202,定义构建器镜像的分层结构,并运行依赖构件中的脚本。在此实施例中,能够通过修改Dockerfile来定义构建器镜像的分层结构。通过运行assemble脚本,为构建过程放置源和其他资产;通过运行run脚本启动构建器镜像的服务器的进程。
步骤S203,生成构建器镜像的服务器的配置文件。可选的,服务器的配置文件可包括:配置提供内容的路径;配置服务器监听上的连接的端口;配置目录的默认文件;模仿类型映射以正确提供文件等。可选的,通过调用目录中的Ma ke命令来确保构建器镜像的服务器的正确构建。
步骤S204,使用业务应用程序测试构建器镜像,且在测试成功后生成S2I相关的构建器镜像(支持S2I的构成器镜像)。在此实施例中,通过运行相关的命令,执行一系列测试以确保构建器镜像可用。可选的,测试可包括:S2I buil d完成是否正确;确认usage脚本按预期工作;运行生成的构建器镜像;以及,检查正在运行的应用程序容器能够正确响应。
本申请所使用的S2I,具有较好的模板化及扩展能力,可以提前准备好不同的源代码执行环境,且S2I的builder image在构建过程里可以封装进一组脚本,这些脚本在镜像构建及运行的各个阶段发挥着关键作用,使镜像的构建者能够更全面的掌控构建过程。S2I还具有层次化及快速构建的特点,其允许在构建时指定一个增量构建对象,使用增量构建时,save-artifacts脚本将发挥作用,将当前镜像内部的数据进行转移,新镜像构建时assemble脚本执行,将数据进行拷贝,具有加速构建和层次化的优势。此外,S2I使开发人员不用再去关注docker file的编写过程,专注于源代码的更新迭代,容器的运行环境均由S2I的builder ima ge和增量构建镜像准备。
在此实施例中,S2I作为一个允许用户直接输入源代码然后打包成可运行程序到Docker镜像的工具,在用户不需要了解Dockerfile的情况下方便构建镜像,通过将源代码放入一个负责编译源代码的Builder image中,自动将编译后的代码打包成Docker镜像,具有快速、高效和生态等多种优点:可以实现很复杂的操作逻辑,而不会创建新的镜像层;在构建过程中,S2I不允许运行任意的yum install命令,以防止降低开发迭代速度;S2I鼓励一个共享镜像生态。从而业务应用可以实现最佳实践。
云原生应用的一个特点是微服务化,应用拆分成大量可独立部署的单元,应用交付过程中依赖手工方式不能满足快速开发、快速交付的需求。持续集成/持续交付(CI/CD,Continuous Integration/Continuous Delivery)是一种软件开发实践,它加速了向用户提供可用软件的速度。其核心功能是流水线,使用自动化的方式代替软件开发过程中的手动操作,减少重复工作量和避免手工操作造成的失误,提高软件交付效率。基于Jenkins的流水线架构可主要包括:基于Master-Sl ave架构和基于容器平台Kubernetes(一种容器编排引擎)插件的Jenkins-kuber netes架构。其中,基于Master-Slave架构代码提交到代码仓库后触发代码构建和部署流程,Jenkins的主节点(Master)负责管理创建的流水线,从节点(Slav e)用来运行流水线任务;而对于基于容器平台Kubernetes插件的Jenkins-kubernetes架构,Jenkins的业务节点实例的生命周期由Kubernetes控制,用户会在Je nkins上定义好一个全局的Pod模板,Pod模板中包括任务Pod的所有容器,由这些容器共同组成运行任务的环境,当流水线执行时,Jenkins的主节点实例会根据定义好的Pod配置在Kubernetes集群中创建一个新的从节点来执行流水线任务。
在一个实施例中,利用Tekton生成一个或多个定制任务,并根据定制任务调用业务镜像以集成目标流水线可包括:
步骤S301,Clone代码。考虑到实际操作中定制任务较多,而且很多时候都需要先Clone代码然后再进行操作,本申请实施例中将代码Clone下来过后通过Workspace共享给其他任务。在此实施例中,直接使用Catalog git-clone来实现这个任务,从而可以根据自己的需求做一些定制。
步骤S302,单元测试。单元测试可通过执行一个测试命令实现。
步骤S303,编译打包。可选的,先用一个任务去将业务应用编译打包成二进制文件,然后将这个编译过后的文件传递到下一个任务进行镜像构建。在此实施例中,通过定义一个workspace把clone任务里面的代码关联过来。将需要用到的环境变量直接通过env注入,或者直接写入到script中,又或者直接使用command来执行任务,然后构建生成的app这个二进制文件保留在代码根目录。
步骤S304,业务镜像推送。在此实施例中,可直接将编译好的二进制文件拷贝到镜像中。
步骤S305,部署业务服务。在此实施例中,可以参考之前Jenkins流水线里面的实现,由于项目中已经包含了Helm Chart包,可直接使用Helm来部署即可,要实现Helm部署,需要提前设置一个包含helm命令的镜像。Catal og下面包含完整的使用文档,将该任务直接下载下来根据用户的需求可做一些定制修改。
步骤S306,回滚。可选的,业务应用部署完成后可能还需要回滚,考虑到可能部署的应用有错误,本申请实施例中需要判断当部署失败的时候再执行回滚。
步骤S307,将多个业务任务全部串联起来组成一个Pipeline流水线。在Pipeline需要先声明使用到的Workspace、Resource、Params这些资源,然后将声明的数据传递到Task任务中去。对于最后一个回滚任务,需要根据前面的deploy任务的结果来判断是否需要执行该任务。
本申请实施例中,Tekton具有可定制的优点,具有高度的灵活性,可以定义非常详细的构建块目录,供开发人员在各种场景中使用;Tekton具有云原生标准化,Tekton在Kubernetes集群上作为扩展安装和运行,并使用完善的Kuber netes资源模型,Tekton工作负载在Kubernetes Pod内执行;而且,Tekton还具有可扩展的优势,Tekton Catalog是社区驱动的Tekton构建块存储库,可以使用Tekton Catalog中定义的组件快速创建新的流水线并扩展现有管道。
在一个具体实施中,S2I自定义镜像构建器的过程包括:制作镜像和使用镜像。制作构建器镜像,需要编写一个Dockerfile,然后执行docker build命令。Dockerfile内容如下:
首先,引用某一最基础的镜像,比如centos:7.6;
其次,拷贝assemble脚本和run脚本;
接着,sys_script,yum安装环境必须的软件包,例如gcc,make,openssl等;
然后,pre_script,优化系统内核参数,做安全加固;
再接着,post_script,安装python虚拟环境virtualenv,在虚拟环境中安装业务代码需要的特定python版本;
以及,清除安装过程中的包;
最后,设置默认命令run。
可选的,assemble脚本通过定制方式确定:python pip安装依赖包;执行所述源代码的设定基础初始化内容。
可选的,run脚本通过通过定制方式确定:设置Web框架运行参数;确定Web服务器的种类,并启动S2I创建。
可通过手工使用构建器镜像,执行S2I build命令,指定业务代码和构建器镜像名称,最终生成业务镜像。在一个具体实施中,如图4所示,根据构建器镜像和源代码,生成业务镜像包括:
步骤S401,获取S2I脚本;
步骤S402,将S2I脚本和源代码流式传输到构建器映像容器中,构建器映像容器中包含构建器镜像;
步骤S403,运行S2I脚本,以生成业务镜像。
可选的,S2I脚本包括assemble脚本,对应的将S2I脚本和源代码流式传输到构建器映像容器中包括:根据构建器镜像运行云容器,并将源代码注入到默认目录中;执行assemble脚本,将源代码从默认目录转移到工作目录下,并将源代码构建成可直接运行的应用程序。
可选的,S2I脚本还包括run脚本,流水线构建的方法还包括:将run脚本设置为启动云容器的镜像入口点,并提交新的构建器镜像。
在此实施例中,执行s2i build命令,指定业务代码和构建器镜像名称,最终生成业务镜像。如图5所示,业务镜像的生成步骤包括:
首先,根据镜像构建器运行容器,并将应用程序的源代码注入到默认目录中。该步骤包括了git“拉取”过程,即git fetch紧接着一个git merge,对应git中的命令git pull,即从远程仓库抓取本地没有的修改并自动合并到远程分支。示例性的,可通过如下方式获取git项目仓库:将尚未进行版本控制的本地目录转换为git仓库;从其它服务器克隆一个已存在的Git仓库。该步骤还包括了git clone&move过程,获得一份已经存在了的Git仓库的拷贝,具体通过git clone命令克隆远程仓库的时候,自定义本地仓库的名字。
其次,执行镜像构建器中的assemble脚本,安装依赖项以及将源代码转移到工作目录下,将源代码构建成可直接运行的应用程序;
最后,将镜像构建器中提供的run脚本设置为启动容器的镜像入口点,然后commit提交新的镜像,供接下来的用户使用。
Tekton可定制task使用构建器镜像。在一个实施例中,如图6所示,根据定制任务调用业务镜像以集成目标流水线包括:
步骤S601,定制任务设置参数,以确定指定的构建器镜像和指定的源代码路径;
步骤S602,指定的构建器镜像和指定的源代码路径调用业务镜像;
步骤S603,将业务镜像推送到镜像仓库以形成流水线。
在此具体实施例中,kubernetes资源类型指定Task,metadata label设置版本,annotations设置分类和tag等。spec.params设置参数,指定构建器镜像,业务代码路径。spec.steps为了解耦,包含如下三个步骤:
首先,使用社区S2I镜像,调用S2I命令,生成业务Dockerfile;
其次,调用docker命令构建业务镜像。本申请实施例中,将该步骤单独分开是为了可以兼容其他的镜像构建工具,比如buildah等。
最后,推送到镜像仓库。
本申请实施例中,基于kubernetes环境下Tekton pipeline工具和自定义的镜像制作工具S2I结合,来实现一种新的打包和发布方式,满足用户在可定制化和可扩展等方面的需求,满足用户可分享和易用性的要求。S2I能够在实际的项目快速部署上线、微服务改造的过程中,极大地赋能开发者和运维用户。而且,S2I无需编写一行Dockerfile,降低学习成本的同时提升发布效率,使用户能够更好地专注在业务本身。进一步的,采用Tekton云原生的方式,更容易做CICD定制内容的分发。
参见图7,本申请实施例还提供了一种流水线构建的装置,其具体实现方式与上述方法的实施例中记载的实施方式、所达到的技术效果一致,部分内容不再赘述。
所述装置包括:源代码获取模块710,用于获取业务应用对应的源代码;业务镜像生成模块720,用于获取S2I相关的构建器镜像,接收S2I创建指令,并运行S2I创建指令以根据构建器镜像和源代码,生成业务镜像;目标流水线生成模块730,用于利用Tekton生成一个或多个定制任务,并根据定制任务调用业务镜像以集成目标流水线。
参见图8,在一具体实施中,业务镜像生成模块720可以包括:S2I脚本获取单元810,用于获取S2I脚本,该S2I脚本包括assemble脚本和run脚本,且assemble脚本和run脚本都可通过定制/自定义方式确定;构建器映像容器单元820,用于将S2I脚本和源代码流式传输到构建器映像容器中,该构建器映像容器中包含构建器镜像;运行单元830,与运行S2I脚本,以生成业务镜像。
参见图9,在一具体实施中,目标流水线生成模块730包括:参数设置单元910,用于获取定制任务,并根据定制任务设置参数,以确定指定的构建器镜像和指定的源代码路径;业务镜像调用单元920,用于根据指定的构建器镜像和指定的源代码路径调用业务镜像;推送单元930,用于将业务镜像推送到镜像仓库以形成流水线。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
参见图10,本申请实施例还提供了一种电子设备200,电子设备200包括至少一个存储器210、至少一个处理器220以及连接不同平台系统的总线230。
存储器210可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)211和/或高速缓存存储器212,还可以进一步包括只读存储器(ROM)213。
其中,存储器210还存储有计算机程序,计算机程序可以被处理器220执行,使得处理器220执行:
获取业务应用对应的源代码;
获取S2I相关的构建器镜像;
接收S2I创建指令,并运行S2I创建指令以根据构建器镜像和源代码,生成业务镜像;以及,
利用Tekton生成一个或多个定制任务,并根据定制任务调用业务镜像以集成目标流水线。
存储器210还可以包括具有一组(至少一个)程序模块215的程序/实用工具214,这样的程序模块215包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
相应的,处理器220可以执行上述计算机程序,以及可以执行程序/实用工具214。
总线230可以为表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、外围总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
电子设备200也可以与一个或多个外部设备240例如键盘、指向设备、蓝牙设备等通信,还可与一个或者多个能够与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口250进行。并且,电子设备200还可以通过网络适配器260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器260可以通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储平台等。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,所述计算机程序被执行时实现如下方法的步骤:
获取S2I相关的构建器镜像;
获取业务应用对应的源代码;
接收S2I创建指令,并运行S2I创建指令以根据构建器镜像和源代码,生成业务镜像;
利用Tekton生成一个或多个定制任务,并根据定制任务调用业务镜像以集成目标流水线。
图11示出了本实施例提供的用于实现上述方法的程序产品300,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品300不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。程序产品300可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言诸如Java、C++等,还包括常规的过程式程序设计语言诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本申请从使用目的上、效能上、进步及新颖性等观点进行阐述,其设置有的实用进步性,已符合专利法所强调的功能增进及使用要件,本申请以上的说明及附图,仅为本申请的较佳实施例而已,并非以此局限本申请,因此,凡一切与本申请构造,装置,特征等近似、雷同的,即凡依本申请专利申请范围所作的等同替换或修饰等,皆应属本申请的专利申请保护的范围之内。

Claims (10)

1.一种流水线构建的方法,其特征在于,包括:
获取S2I相关的构建器镜像;
获取业务应用对应的源代码;
接收S2I创建指令,并运行所述S2I创建指令以根据所述构建器镜像和所述源代码,生成业务镜像;
利用Tekton生成一个或多个定制任务,并根据所述定制任务调用所述业务镜像以集成目标流水线。
2.根据权利要求1所述的流水线构建的方法,其特征在于,根据所述构建器镜像和所述源代码,生成业务镜像包括:
获取S2I脚本;
将所述S2I脚本和所述源代码流式传输到构建器映像容器中,所述构建器映像容器中包含所述构建器镜像;
运行所述S2I脚本,以生成所述业务镜像。
3.根据权利要求2所述的流水线构建的方法,其特征在于,所述S2I脚本包括assemble脚本,所述将所述S2I脚本和所述源代码流式传输到构建器映像容器中包括:
根据构建器镜像运行云容器,并将所述源代码注入到默认目录中;
执行所述assemble脚本,将所述源代码从所述默认目录转移到工作目录下,并将所述源代码构建成可直接运行的应用程序。
4.根据权利要求2或3所述的流水线构建的方法,其特征在于,所述S2I脚本还包括run脚本,所述方法还包括:
将所述run脚本设置为启动所述云容器的镜像入口点,并提交新的构建器镜像。
5.根据权利要求1所述的基于云容器的镜像构建器生成方法,其特征在于,所述assemble脚本通过定制方式确定:
python pip安装依赖包;
执行所述源代码的设定基础初始化内容。
6.根据权利要求4所述的基于云容器的镜像构建器生成方法,其特征在于,所述run脚本通过定制方式确定:
设置Web框架运行参数;
确定Web服务器的种类,并启动S2I创建。
7.根据权利要求1-3、5或6任一项所述的流水线构建的方法,其特征在于,所述根据所述定制任务调用所述业务镜像以集成目标流水线包括:
根据所述定制任务设置参数,以确定指定的构建器镜像和指定的源代码路径;
根据所述指定的构建器镜像和指定的源代码路径调用所述业务镜像;
将所述业务镜像推送到镜像仓库以形成流水线。
8.一种流水线构建的装置,其特征在于,包括:
源代码获取模块,用于获取业务应用对应的源代码;
业务镜像生成模块,用于获取S2I相关的构建器镜像,接收S2I创建指令,并运行所述S2I创建指令以根据所述构建器镜像和所述源代码,生成业务镜像;
目标流水线生成模块,用于利用Tekton生成一个或多个定制任务,并根据所述定制任务调用所述业务镜像以集成目标流水线。
9.一种电子设备,所述电子设备包括存储器、处理器以及用于执行任务的硬件模组,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现如权利要求1-7任一项方法的步骤。
10.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1-7任一项方法的步骤。
CN202210121945.3A 2022-02-09 2022-02-09 流水线构建的方法、装置、电子设备及计算机可读存储介质 Pending CN114461182A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210121945.3A CN114461182A (zh) 2022-02-09 2022-02-09 流水线构建的方法、装置、电子设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210121945.3A CN114461182A (zh) 2022-02-09 2022-02-09 流水线构建的方法、装置、电子设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN114461182A true CN114461182A (zh) 2022-05-10

Family

ID=81413184

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210121945.3A Pending CN114461182A (zh) 2022-02-09 2022-02-09 流水线构建的方法、装置、电子设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN114461182A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115421847A (zh) * 2022-11-03 2022-12-02 江苏博云科技股份有限公司 支持多引擎的研发运维平台和cicd流水线的管理方法及设备
CN115951877A (zh) * 2022-09-30 2023-04-11 广东美云智数科技有限公司 任务构建方法、装置、电子设备和存储介质
CN117806654A (zh) * 2024-03-01 2024-04-02 杭州云掣科技有限公司 一种基于Tekton的自定义云原生DevOps流水线系统及方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150113626A1 (en) * 2013-10-21 2015-04-23 Adobe System Incorporated Customized Log-In Experience
CN112711411A (zh) * 2020-12-22 2021-04-27 宝付网络科技(上海)有限公司 一种基于Kubernetes及docker的CI/CD流水线系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20150113626A1 (en) * 2013-10-21 2015-04-23 Adobe System Incorporated Customized Log-In Experience
CN112711411A (zh) * 2020-12-22 2021-04-27 宝付网络科技(上海)有限公司 一种基于Kubernetes及docker的CI/CD流水线系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ERICNIE: "OpenShift应用镜像构建(1) S2I tomcat 镜像定制", 《博客园,HTTPS://WWW.CNBLOGS.COM/ERICNIE/P/9677719.HTML》 *
米开朗基杨: "Tekton Pipeline 教程", 《CSDN博客,HTTPS://BLOG.CSDN.NET/ALEX_YANGCHUANSHENG/ARTICLE/DETAILS/100841142》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115951877A (zh) * 2022-09-30 2023-04-11 广东美云智数科技有限公司 任务构建方法、装置、电子设备和存储介质
CN115421847A (zh) * 2022-11-03 2022-12-02 江苏博云科技股份有限公司 支持多引擎的研发运维平台和cicd流水线的管理方法及设备
CN117806654A (zh) * 2024-03-01 2024-04-02 杭州云掣科技有限公司 一种基于Tekton的自定义云原生DevOps流水线系统及方法

Similar Documents

Publication Publication Date Title
CN107491329B (zh) Docker镜像构建方法、设备、存储介质以及电子装置
CN112585919B (zh) 利用基于云的应用管理技术来管理应用配置状态的方法
CN114461182A (zh) 流水线构建的方法、装置、电子设备及计算机可读存储介质
KR101807897B1 (ko) 크로스―플랫폼 어플리케이션 프레임워크
CN110688142B (zh) 应用程序编程接口的发布方法、设备及存储介质
US9081579B2 (en) System and method for mobile application development
US20150149979A1 (en) Dynamic model based software application development
WO2017185606A1 (zh) 基于overlay机制的APK开发方法及系统
US20120272204A1 (en) Uninterruptible upgrade for a build service engine
CN111399865A (zh) 一种基于容器技术自动构建目标文件的方法
CN112965785B (zh) 基于容器的微服务应用开发方法及开发平台
CN113032963A (zh) 一种Simulink模型仿真加速方法及装置
CN113805882A (zh) 应用程序开发的方法、装置、电子设备及存储介质
CN115480801A (zh) 一种基于Vue框架的多项目开发部署运行方法和系统
CN113946323A (zh) 基于微服务体系的在线开发方法、装置、设备及存储介质
US11561790B2 (en) Orchestrating multi-level tools for the deployment of a network product
Thomas et al. Simulation factory: Taming application configuration and workflow on high-end resources
CN114237760B (zh) 一种将工业机理模型封装为容器镜像并发布web服务的方法
EP3683675A1 (en) System, apparatus and method of integrated deployment
CN115712793A (zh) 全景前端文档站点生成方法及系统
US10768911B2 (en) Managing software components for software application development
CN114090189A (zh) 一种基于流水线的构建部署管理方法及系统
CN114265595A (zh) 一种基于智能合约的云原生应用开发与部署系统和方法
Hsieh et al. Emerging patterns of continuous integration for cross-platform software development
Joseph et al. Software Framework Of An All-In-One Transpiler For Development Of WORA Applicatons

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20220510

RJ01 Rejection of invention patent application after publication