CN112558981B - 基于jenkinsfile的自定义编译部署方法及系统 - Google Patents

基于jenkinsfile的自定义编译部署方法及系统 Download PDF

Info

Publication number
CN112558981B
CN112558981B CN202011539926.XA CN202011539926A CN112558981B CN 112558981 B CN112558981 B CN 112558981B CN 202011539926 A CN202011539926 A CN 202011539926A CN 112558981 B CN112558981 B CN 112558981B
Authority
CN
China
Prior art keywords
compiling
module
deployment
strategy
images
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
CN202011539926.XA
Other languages
English (en)
Other versions
CN112558981A (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.)
Shanghai Wanxiang Blockchain Inc
Original Assignee
Shanghai Wanxiang Blockchain Inc
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 Shanghai Wanxiang Blockchain Inc filed Critical Shanghai Wanxiang Blockchain Inc
Priority to CN202011539926.XA priority Critical patent/CN112558981B/zh
Publication of CN112558981A publication Critical patent/CN112558981A/zh
Application granted granted Critical
Publication of CN112558981B publication Critical patent/CN112558981B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • G06F8/63Image based installation; Cloning; Build to order
    • 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/70Software maintenance or management
    • G06F8/75Structural analysis for program understanding
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本发明提供了一种基于jenkinsfile的自定义编译部署方法及系统,包括:步骤M1:在工程中引入jenkinsfile依赖包,完成基础模块与业务模块的配置;步骤M2:基于jenkinsfile依赖包,通过代码识别模块识别出工程中被修改的源码;步骤M3:被修改的源码根据编译策略模块中预设的编码策略进行编译,得到相应镜像,存储于镜像仓库;步骤M4:基于预设部署策略将镜像仓库中的镜像部署至各类环境中,完成源码服务的输出。本发明通过采用编译部署过程捕捉模块,解决了编译过程中日志的捕获和展示的问题,能够实现无人值守的编译部署全流程。

Description

基于jenkinsfile的自定义编译部署方法及系统
技术领域
本发明涉及区块链技术领域,具体地,涉及基于jenkinsfile的自定义编译部署方法及系统。
背景技术
典型的编译部署工具是git和jenkins,而一个传统的从源码到部署上线的场景是编译前需要把源码提交到git仓库,然后使用jenkins去构建源码的所有模块产生相关的程序包,再通过jenkins将这些程序包部署到不同的环境中,在这个场景中存在两个问题,一个是环境不同存在兼容性的问题,第二个是全量编译源码耗时非常久,导致一次编译部署效率非常低下。在一个容器化的编译部署所使用的工具依然是git和jenkins,由于引入了镜像仓库使得编译可以不用在每个环境进行编译,大大缩短了编译时间,而容器化解决了环境不一致导致兼容性的问题,因此编译部署效率得到了一定提高,而一个系统拥有基础模块和应用模块,而基础模块作为应用模块的基础,仅需进行编译即可,无需生成镜像,但是传统的jenkins无法指定所需编译的模块,导致无论基础模块还是业务模块均会产生镜像,而每次修改代码,无论是否修改了业务模块,均需重新编译产生新的镜像,从而导致编译效率十分低下,遇到大型系统往往还有镜像过大的问题。其次,使用jenkins在编译和部署过程中是封闭的系统,编译日志和部署日志无法与其他自动化工具打通,无法做到编译、部署失败后的后续自动处理,只能人工干预。基于上述问题,建立基于jenkinsfile开发的容器化自动编译部署解决了jenkins灵活性和其他自动化工具打通的问题,同时能够自定义编译模块,减少编译时间,缩小镜像大小。
专利文献CN109241035A(申请号:201810987132.6)公开了一种自定义脚本实现数据库的自动部署方法。启动自定义脚本,脚本解析过程中,会根据不同版本的操作系统,判断需要下载安装的依赖程序,并进行依赖程序的下载安装;脚本运行至环境变量、基础配置环节,选择需要安装的数据库类型;脚本自动下载与操作系统版本相符的数据库程序;根据所选数据库类型,创建指定用户组和用户,并授权此用户组、用户的访问权限,并调用启动数据库安装程序,在指定目录下根据配置信息重载数据库配置文件;生成服务可执行文件,而后实现对数据库的账号、密码初始化,完成数据库自动部署。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于jenkinsfile的自定义编译部署方法及系统。
根据本发明提供的一种基于jenkinsfile的自定义编译部署方法,包括:
步骤M1:在工程中引入jenkinsfile依赖包,完成基础模块与业务模块的配置;
步骤M2:基于jenkinsfile依赖包,通过代码识别模块识别出工程中被修改的源码;
步骤M3:被修改的源码根据编译策略模块中预设的编码策略进行编译,得到相应镜像存储于镜像仓库;
步骤M4:基于需求选择部署策略,根据选择的部署策略将镜像仓库中的镜像部署至各类环境中,完成源码服务的输出。
优选地,所述步骤M2包括:将jenkinsfile中预设的模块类型和工程代码中的模块进行关联,通过jenkinsfile中预设的模块类型识别出工程中的基础模块和应用模块,同时识别出工程中修改的源码。
优选地,所述步骤M3包括:不同类型的被修改的源码采用不同的编译策略;
所述不同的编译策略包括:
基础模块发生变动,对发生变动的基础模块进行编译而不产生镜像;业务模块发生变动,对发生变动的业务模块进行编译并产生镜像;基础模块发生变动后,编译全量镜像;
编译失败后触发处理策略和触发策略;
所述处理策略包括:调用即时通讯工具的API接口进行捕捉和输出和/或调用邮件API接口发送邮件告知;
所述触发策略包括编译失败后重复预设次数编译;
镜像产出策略包括每次编译产生全量镜像或只产生业务模块镜像。
优选地,所述步骤M4包括:根据需求选择部署策略,通过选择的部署策略将镜像仓库中最新的镜像部署到各类环境中;
所述部署策略包括自动部署策略、半自动部署策略和手动部署策略;
所述自动部署策略包括将镜像仓库中最新版本号的镜像自动发布到测试环境中,在测试通过后,同步至准仿真环境中,并自动完成部署;
所述半自动部署策略包括当检测到镜像仓库中有最新版本号的镜像产生后,提示使用者是否要部署最新镜像至测试环境,当使用者选择是,则通过自动部署策略进行部署;当使用者选择否,则通过手动部署策略进行部署;
所述手动部署策略包括获取最新预设数量版本号的镜像,由使用者在获取的最新预设数量版本号的镜像中选择版本号镜像进行部署至测试环境,当测试通过后,由使用者打上发布版本号同步至准仿真环境,在准生产环境设置定时部署或手工选择发布版本发布。
优选地,还包括:捕捉编译部署过程中信息并进行输出,以json格式文件对接至各个云原生工具中并进行展现,同时提供编译状态的API接口,与各个自动化系统进行对接,实现全过程无人值守编译部署操作。
根据本发明提供的一种基于jenkinsfile的自定义编译部署系统,包括:
模块M1:在工程中引入jenkinsfile依赖包,完成基础模块与业务模块的配置;
模块M2:基于jenkinsfile依赖包,通过代码识别模块识别出工程中被修改的源码;
模块M3:被修改的源码根据编译策略模块中预设的编码策略进行编译,得到相应镜像存储于镜像仓库;
模块M4:基于需求选择部署策略,根据选择的部署策略将镜像仓库中的镜像部署至各类环境中,完成源码服务的输出。
优选地,所述模块M2包括:将jenkinsfile中预设的模块类型和工程代码中的模块进行关联,通过jenkinsfile中预设的模块类型识别出工程中的基础模块和应用模块,同时识别出工程中修改的源码。
优选地,所述模块M3包括:不同类型的被修改的源码采用不同的编译策略;
所述不同的编译策略包括:
基础模块发生变动,对发生变动的基础模块进行编译而不产生镜像;业务模块发生变动,对发生变动的业务模块进行编译并产生镜像;基础模块发生变动后,编译全量镜像;
编译失败后触发处理策略和触发策略;
所述处理策略包括:调用即时通讯工具的API接口进行捕捉和输出和/或调用邮件API接口发送邮件告知;
所述触发策略包括编译失败后重复预设次数编译;
镜像产出策略包括每次编译产生全量镜像或只产生业务模块镜像。
优选地,所述模块M4包括:根据需求选择部署策略,通过选择的部署策略将镜像仓库中最新的镜像部署到各类环境中;
所述部署策略包括自动部署策略、半自动部署策略和手动部署策略;
所述自动部署策略包括将镜像仓库中最新版本号的镜像自动发布到测试环境中,在测试通过后,同步至准仿真环境中,并自动完成部署;
所述半自动部署策略包括当检测到镜像仓库中有最新版本号的镜像产生后,提示使用者是否要部署最新镜像至测试环境,当使用者选择是,则通过自动部署策略进行部署;当使用者选择否,则通过手动部署策略进行部署;
所述手动部署策略包括获取最新预设数量版本号的镜像,由使用者在获取的最新预设数量版本号的镜像中选择版本号镜像进行部署至测试环境,当测试通过后,由使用者打上发布版本号同步至准仿真环境,在准生产环境设置定时部署或手工选择发布版本发布。
优选地,还包括:捕捉编译部署过程中信息并进行输出,以json格式文件对接至各个云原生工具中并进行展现,同时提供编译状态的API接口,与各个自动化系统进行对接,实现全过程无人值守编译部署操作。
与现有技术相比,本发明具有如下的有益效果:
1、本发明通过采用jenkinsfile适配模块,解决了jenkinsfile在不同编程语言中的识别的问题;
2、本发明通过采用代码识别模块,解决了基础代码和业务代码的代码类型的识别的问题;
3、本发明通过采用编译策略模块,解决了不同代码类型的不同编译策略的问题,提升了编译效率,减少了编译次数,缩小了编译产生的镜像大小;
4、本发明通过采用部署策略模块,解决了代码编译产生的镜像部署的问题,实现了自动化部署,提高了部署效率,灵活的部署策略可以做到无人值守部署;
5、本发明通过采用编译部署过程捕捉模块,解决了编译过程中日志的捕获和展示的问题,能够实现无人值守的编译部署全流程。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为基于jenkinsfile的自定义编译部署方法流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
实施例1
根据本发明提供的一种基于jenkinsfile的自定义编译部署方法,如图1所示,包括:
步骤M1:在工程中引入jenkinsfile依赖包,完成基础模块与业务模块的配置;
步骤M2:基于jenkinsfile依赖包,通过代码识别模块识别出工程中被修改的源码;
步骤M3:被修改的源码根据编译策略模块中预设的编码策略进行编译,得到相应镜像存储于镜像仓库;
步骤M4:基于需求选择部署策略,根据选择的部署策略将镜像仓库中的镜像部署至各类环境中,完成源码服务的输出。
具体地,所述步骤M2包括:将jenkinsfile中预设的模块类型和工程代码中的模块进行关联,通过jenkinsfile中预设的模块类型识别出工程中的基础模块和应用模块,同时识别出工程中修改的源码。
具体地,所述步骤M3包括:不同类型的被修改的源码采用不同的编译策略;
所述不同的编译策略包括:
基础模块发生变动,对发生变动的基础模块进行编译而不产生镜像;业务模块发生变动,对发生变动的业务模块进行编译并产生镜像;基础模块发生变动后,编译全量镜像;
编译失败后触发处理策略和触发策略;
所述处理策略包括:调用即时通讯工具的API接口进行捕捉和输出和/或调用邮件API接口发送邮件告知;
所述触发策略包括编译失败后重复预设次数编译;
镜像产出策略包括每次编译产生全量镜像或只产生业务模块镜像。
具体地,所述步骤M4包括:根据需求选择部署策略,通过选择的部署策略将镜像仓库中最新的镜像部署到各类环境中;
所述部署策略包括自动部署策略、半自动部署策略和手动部署策略;
所述自动部署策略包括将镜像仓库中最新版本号的镜像自动发布到测试环境中,在测试通过后,同步至准仿真环境中,并自动完成部署;
所述半自动部署策略包括当检测到镜像仓库中有最新版本号的镜像产生后,提示使用者是否要部署最新镜像至测试环境,当使用者选择是,则通过自动部署策略进行部署;当使用者选择否,则通过手动部署策略进行部署;
所述手动部署策略包括获取最新预设数量版本号的镜像,由使用者在获取的最新预设数量版本号的镜像中选择版本号镜像进行部署至测试环境,当测试通过后,由使用者打上发布版本号同步至准仿真环境,在准生产环境设置定时部署或手工选择发布版本发布。
具体地,还包括:捕捉编译部署过程中信息并进行输出,以json格式文件对接至各个云原生工具中并进行展现,同时提供编译状态的API接口,与各个自动化系统进行对接,实现全过程无人值守编译部署操作。
根据本发明提供的一种基于jenkinsfile的自定义编译部署系统,包括:
模块M1:在工程中引入jenkinsfile依赖包,完成基础模块与业务模块的配置;
模块M2:基于jenkinsfile依赖包,通过代码识别模块识别出工程中被修改的源码;
模块M3:被修改的源码根据编译策略模块中预设的编码策略进行编译,得到相应镜像存储于镜像仓库;
模块M4:基于需求选择部署策略,根据选择的部署策略将镜像仓库中的镜像部署至各类环境中,完成源码服务的输出。
具体地,所述模块M2包括:将jenkinsfile中预设的模块类型和工程代码中的模块进行关联,通过jenkinsfile中预设的模块类型识别出工程中的基础模块和应用模块,同时识别出工程中修改的源码。
具体地,所述模块M3包括:不同类型的被修改的源码采用不同的编译策略;
所述不同的编译策略包括:
基础模块发生变动,对发生变动的基础模块进行编译而不产生镜像;业务模块发生变动,对发生变动的业务模块进行编译并产生镜像;基础模块发生变动后,编译全量镜像;
编译失败后触发处理策略和触发策略;
所述处理策略包括:调用即时通讯工具的API接口进行捕捉和输出和/或调用邮件API接口发送邮件告知;
所述触发策略包括编译失败后重复预设次数编译;
镜像产出策略包括每次编译产生全量镜像或只产生业务模块镜像。
具体地,所述模块M4包括:根据需求选择部署策略,通过选择的部署策略将镜像仓库中最新的镜像部署到各类环境中;
所述部署策略包括自动部署策略、半自动部署策略和手动部署策略;
所述自动部署策略包括将镜像仓库中最新版本号的镜像自动发布到测试环境中,在测试通过后,同步至准仿真环境中,并自动完成部署;
所述半自动部署策略包括当检测到镜像仓库中有最新版本号的镜像产生后,提示使用者是否要部署最新镜像至测试环境,当使用者选择是,则通过自动部署策略进行部署;当使用者选择否,则通过手动部署策略进行部署;
所述手动部署策略包括获取最新预设数量版本号的镜像,由使用者在获取的最新预设数量版本号的镜像中选择版本号镜像进行部署至测试环境,当测试通过后,由使用者打上发布版本号同步至准仿真环境,在准生产环境设置定时部署或手工选择发布版本发布。
具体地,还包括:捕捉编译部署过程中信息并进行输出,以json格式文件对接至各个云原生工具中并进行展现,同时提供编译状态的API接口,与各个自动化系统进行对接,实现全过程无人值守编译部署操作。
实施例2
实施例2是实施例1的变化例
传统的jenkins工具能够解决自动编译,但是无法灵活的指定编译的模块,而使用jenkinsfile可以做到灵活定义编译模块,将无需产生镜像的基础模块仅仅进行编译,而将业务模块编译成镜像,同时,可以解决修改代码需要反复编译全量代码,从而大大减少镜像编译时效,同时jenkinsfile能够以json格式文件与云原生的各种api进行对接,可获取编译部署过程中的各种状态进行捕捉,针对编译失败和部署失败不同的场景进行自动重新编译和部署回滚操作,从而形成无人值守编译部署。
基于jenkinsfile的自定义编译部署方法主要包含下述5个模块
1、jenkinsfile适配模块,该模块提供一种适配方法,主要用于不同编程语言对于jenkinsfile不同的解析的实现方法,当一个工程建立起来后,需要引入jenkinsfile的依赖包,同时引用jenkinsfile的适配模块以能够解析jenkinsfile,在jenkinsfile中可以定义模块类型,分为基础模块和业务模块。
2、代码识别模块,该模块提供一种方法,用于将jenkinsfile中定义的模块类型和工程代码中的模块进行关联,实现通过在jenkinsfile中定义的模块类型识别出工程中的基础模块和应用模块,同时能够识别出工程中代码修改,随着将修改的代码的提交可以触发编译策略。
3、编译策略模块,该模块主要用于定制编译源码的策略,用于识别代码模块后根据不同类型的代码模块采用不同的编译策略:1)、可以定义基础模块发生变动只编译而不产生镜像,定义业务模块发生变动编译后产生镜像;定义基础模块发生变动后,可以编译全量镜像。2)、可以定义编译失败后的可触发的处理策略,触发策略包括:调用即时通讯工具的API接口进行捕捉和输出;调用邮箱API接口发送邮件告知;定义编译失败后重试次数。3)、可以定义镜像产出策略:每次编译产生全量镜像;只产生业务模块镜像。
4、部署策略模块,该模块主要用于定制部署镜像的策略,用于将镜像仓库中最新的镜像部署到各类环境中的不同部署策略:1)、自动部署策略:每次将镜像仓库中最新版本号的镜像自动发布到测试环境,在测试通过后,同步至准发布环境中仓库中,并且自动完成部署;2)、半自动部署策略:当检测到镜像仓库中有最新版本镜像产生后提示使用者是否要部署最新镜像至测试环境,如选择“是”则自动部署,后续步骤类似于自动部署策略;如选择否则不自动部署,进入手动部署策略进行部署;3)、手动部署策略:手动部署策略默认获取最新5个版本的镜像,由使用者自行选择版本进行部署至测试环境,当测试通过后,由使用者打上发布版本自动同步至准生产环境,在准生产环境可以设置定时部署,也可以直接手工选择发布版本发布。
5、编译部署过程捕捉模块,该模块主要用于捕捉编译部署过程中信息并进行输出,以json格式文件对接至各个云原生工具中并能够展现出,同时提供编译状态的API接口,可以与其他各个自动化系统进行对接,实现全过程无人值守编译部署操作。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统、装置及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统、装置及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同程序。所以,本发明提供的系统、装置及其各个模块可以被认为是一种硬件部件,而对其内包括的用于实现各种程序的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件程序又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (8)

1.一种基于jenkinsfile的自定义编译部署方法,其特征在于,包括:
步骤M1:在工程中引入jenkinsfile依赖包,完成基础模块与业务模块的配置;
步骤M2:基于jenkinsfile依赖包,通过代码识别模块识别出工程中被修改的源码;
步骤M3:被修改的源码根据编译策略模块中预设的编码策略进行编译,得到相应镜像存储于镜像仓库;
步骤M4:基于需求选择部署策略,根据选择的部署策略将镜像仓库中的镜像部署至各类环境中,完成源码服务的输出;
所述步骤M3包括:不同类型的被修改的源码采用不同的编译策略;
所述不同的编译策略包括:
基础模块发生变动,对发生变动的基础模块进行编译而不产生镜像;业务模块发生变动,对发生变动的业务模块进行编译并产生镜像;基础模块发生变动后,编译全量镜像;
编译失败后触发处理策略和触发策略;
所述处理策略包括:调用即时通讯工具的API接口进行捕捉和输出和/或调用邮件API接口发送邮件告知;
所述触发策略包括编译失败后重复预设次数编译;
镜像产出策略包括每次编译产生全量镜像或只产生业务模块镜像。
2.根据权利要求1所述的基于jenkinsfile的自定义编译部署方法,其特征在于,所述步骤M2包括:将jenkinsfile中预设的模块类型和工程代码中的模块进行关联,通过jenkinsfile中预设的模块类型识别出工程中的基础模块和应用模块,同时识别出工程中修改的源码。
3.根据权利要求1所述的基于jenkinsfile的自定义编译部署方法,其特征在于,所述步骤M4包括:根据需求选择部署策略,通过选择的部署策略将镜像仓库中最新的镜像部署到各类环境中;
所述部署策略包括自动部署策略、半自动部署策略和手动部署策略;
所述自动部署策略包括将镜像仓库中最新版本号的镜像自动发布到测试环境中,在测试通过后,同步至准仿真环境中,并自动完成部署;
所述半自动部署策略包括当检测到镜像仓库中有最新版本号的镜像产生后,提示使用者是否要部署最新镜像至测试环境,当使用者选择是,则通过自动部署策略进行部署;当使用者选择否,则通过手动部署策略进行部署;
所述手动部署策略包括获取最新预设数量版本号的镜像,由使用者在获取的最新预设数量版本号的镜像中选择版本号镜像进行部署至测试环境,当测试通过后,由使用者打上发布版本号同步至准仿真环境,在准生产环境设置定时部署或手工选择发布版本发布。
4.根据权利要求1所述的基于jenkinsfile的自定义编译部署方法,其特征在于,还包括:捕捉编译部署过程中信息并进行输出,以json格式文件对接至各个云原生工具中并进行展现,同时提供编译状态的API接口,与各个自动化系统进行对接,实现全过程无人值守编译部署操作。
5.一种基于jenkinsfile的自定义编译部署系统,其特征在于,包括:
模块M1:在工程中引入jenkinsfile依赖包,完成基础模块与业务模块的配置;
模块M2:基于jenkinsfile依赖包,通过代码识别模块识别出工程中被修改的源码;
模块M3:被修改的源码根据编译策略模块中预设的编码策略进行编译,得到相应镜像存储于镜像仓库;
模块M4:基于需求选择部署策略,根据选择的部署策略将镜像仓库中的镜像部署至各类环境中,完成源码服务的输出;
所述模块M3包括:不同类型的被修改的源码采用不同的编译策略;
所述不同的编译策略包括:
基础模块发生变动,对发生变动的基础模块进行编译而不产生镜像;业务模块发生变动,对发生变动的业务模块进行编译并产生镜像;基础模块发生变动后,编译全量镜像;
编译失败后触发处理策略和触发策略;
所述处理策略包括:调用即时通讯工具的API接口进行捕捉和输出和/或调用邮件API接口发送邮件告知;
所述触发策略包括编译失败后重复预设次数编译;
镜像产出策略包括每次编译产生全量镜像或只产生业务模块镜像。
6.根据权利要求5所述的基于jenkinsfile的自定义编译部署系统,其特征在于,所述模块M2包括:将jenkinsfile中预设的模块类型和工程代码中的模块进行关联,通过jenkinsfile中预设的模块类型识别出工程中的基础模块和应用模块,同时识别出工程中修改的源码。
7.根据权利要求5所述的基于jenkinsfile的自定义编译部署系统,其特征在于,所述模块M4包括:根据需求选择部署策略,通过选择的部署策略将镜像仓库中最新的镜像部署到各类环境中;
所述部署策略包括自动部署策略、半自动部署策略和手动部署策略;
所述自动部署策略包括将镜像仓库中最新版本号的镜像自动发布到测试环境中,在测试通过后,同步至准仿真环境中,并自动完成部署;
所述半自动部署策略包括当检测到镜像仓库中有最新版本号的镜像产生后,提示使用者是否要部署最新镜像至测试环境,当使用者选择是,则通过自动部署策略进行部署;当使用者选择否,则通过手动部署策略进行部署;
所述手动部署策略包括获取最新预设数量版本号的镜像,由使用者在获取的最新预设数量版本号的镜像中选择版本号镜像进行部署至测试环境,当测试通过后,由使用者打上发布版本号同步至准仿真环境,在准生产环境设置定时部署或手工选择发布版本发布。
8.根据权利要求5所述的基于jenkinsfile的自定义编译部署系统,其特征在于,还包括:捕捉编译部署过程中信息并进行输出,以json格式文件对接至各个云原生工具中并进行展现,同时提供编译状态的API接口,与各个自动化系统进行对接,实现全过程无人值守编译部署操作。
CN202011539926.XA 2020-12-23 2020-12-23 基于jenkinsfile的自定义编译部署方法及系统 Active CN112558981B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011539926.XA CN112558981B (zh) 2020-12-23 2020-12-23 基于jenkinsfile的自定义编译部署方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011539926.XA CN112558981B (zh) 2020-12-23 2020-12-23 基于jenkinsfile的自定义编译部署方法及系统

Publications (2)

Publication Number Publication Date
CN112558981A CN112558981A (zh) 2021-03-26
CN112558981B true CN112558981B (zh) 2024-02-06

Family

ID=75032316

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011539926.XA Active CN112558981B (zh) 2020-12-23 2020-12-23 基于jenkinsfile的自定义编译部署方法及系统

Country Status (1)

Country Link
CN (1) CN112558981B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113821228B (zh) * 2021-09-30 2023-07-11 奥特酷智能科技(南京)有限公司 一种基于分层容器镜像构建ros或类ros项目的方法

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572091A (zh) * 2014-12-25 2015-04-29 百度在线网络技术(北京)有限公司 应用软件实现方法、装置以及计算机设备
WO2017036335A1 (zh) * 2015-09-01 2017-03-09 阿里巴巴集团控股有限公司 一种代码提交方法和设备
CN107562472A (zh) * 2017-08-24 2018-01-09 四川长虹电器股份有限公司 基于docker容器的微服务系统及方法
CN107678756A (zh) * 2017-09-29 2018-02-09 千寻位置网络有限公司 一种基于Docker的Web应用一键发布方法
CN109144518A (zh) * 2018-08-21 2019-01-04 郑州云海信息技术有限公司 一种基于jenkins的镜像文件构建方法及装置
CN109213492A (zh) * 2018-09-21 2019-01-15 郑州云海信息技术有限公司 一种自动化编译安装方法、装置、设备及存储介质
CN109358857A (zh) * 2018-08-22 2019-02-19 华为技术有限公司 镜像构建、镜像存储、镜像分发方法及装置
CN109683899A (zh) * 2017-10-18 2019-04-26 中移(苏州)软件技术有限公司 一种软件集成方法及装置
CN110262806A (zh) * 2019-06-20 2019-09-20 杭州泰然鲸数云计算有限公司 一种支持自动化服务编排的DevOps系统
CN110673853A (zh) * 2019-09-25 2020-01-10 中国工商银行股份有限公司 一种编译方法、装置及系统
CN110795078A (zh) * 2019-09-28 2020-02-14 同程网络科技股份有限公司 基于ios系统下的app工程运作系统的架构方法

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030182652A1 (en) * 2001-12-21 2003-09-25 Custodio Gabriel T. Software building and deployment system and method
US10067757B2 (en) * 2015-11-20 2018-09-04 Google Llc Dynamic update of an application in compilation and deployment with hot-swapping
US20180088973A1 (en) * 2016-09-25 2018-03-29 Dinesh Subhraveti Methods and systems for interconversions among virtual machines, containers and container specifications
US10990365B2 (en) * 2019-02-26 2021-04-27 Red Hat, Inc. Container image building using dependency container images

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572091A (zh) * 2014-12-25 2015-04-29 百度在线网络技术(北京)有限公司 应用软件实现方法、装置以及计算机设备
WO2017036335A1 (zh) * 2015-09-01 2017-03-09 阿里巴巴集团控股有限公司 一种代码提交方法和设备
CN107562472A (zh) * 2017-08-24 2018-01-09 四川长虹电器股份有限公司 基于docker容器的微服务系统及方法
CN107678756A (zh) * 2017-09-29 2018-02-09 千寻位置网络有限公司 一种基于Docker的Web应用一键发布方法
CN109683899A (zh) * 2017-10-18 2019-04-26 中移(苏州)软件技术有限公司 一种软件集成方法及装置
CN109144518A (zh) * 2018-08-21 2019-01-04 郑州云海信息技术有限公司 一种基于jenkins的镜像文件构建方法及装置
CN109358857A (zh) * 2018-08-22 2019-02-19 华为技术有限公司 镜像构建、镜像存储、镜像分发方法及装置
CN109213492A (zh) * 2018-09-21 2019-01-15 郑州云海信息技术有限公司 一种自动化编译安装方法、装置、设备及存储介质
CN110262806A (zh) * 2019-06-20 2019-09-20 杭州泰然鲸数云计算有限公司 一种支持自动化服务编排的DevOps系统
CN110673853A (zh) * 2019-09-25 2020-01-10 中国工商银行股份有限公司 一种编译方法、装置及系统
CN110795078A (zh) * 2019-09-28 2020-02-14 同程网络科技股份有限公司 基于ios系统下的app工程运作系统的架构方法

Also Published As

Publication number Publication date
CN112558981A (zh) 2021-03-26

Similar Documents

Publication Publication Date Title
US11599348B2 (en) Container image building using shared resources
CN108614701B (zh) 一种Linux操作系统定制方法及装置
CN107678748B (zh) 一种源代码文件编译方法及装置
CN106775744B (zh) 一种生成静态库的方法和装置
CN106325847B (zh) 基于iOS平台获取应用程序功能的方法和装置
CN111309336B (zh) 分布式应用的部署方法及装置
CN106371881B (zh) 一种用于服务器内程序版本更新的方法和系统
CN110750415B (zh) 接口服务配置方法、装置、介质和计算机设备
CN112558981B (zh) 基于jenkinsfile的自定义编译部署方法及系统
CN105391763A (zh) 对多个apk文件进行加固的方法和服务器
CN109101244B (zh) 一种ios系统一体化自动打包方法
CN110888652A (zh) 基于jenkins插件的多版本构建方法及终端
CN115248700A (zh) 一种产品代码自动化构建移动安装包的方法和系统
CN113254054B (zh) 一种智能合约一站式开发系统及方法
CN105260184B (zh) 一种恢复镜像文件的调试方法及装置
CN112286433A (zh) 屏幕画面获取方法、装置及计算机可读介质以及测试端
CN112732265A (zh) 一种数据处理方法和相关装置
CN111782554A (zh) 一种软件测试方法、装置、设备及计算机可读存储介质
CN116643761A (zh) 一种定制化镜像制作及部署方法、装置、终端及介质
CN113590179B (zh) 插件检测方法、装置、电子设备及存储介质
CN100359485C (zh) 嵌入式系统的测试装置及测试方法
CN115185958A (zh) 射频参数更新系统
CN115016808A (zh) 一种前端应用部署方法及装置
CN114880244A (zh) 应用测试方法及装置、存储介质及电子设备
CN111427770B (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
GR01 Patent grant
GR01 Patent grant