CN109032645A - 基于Kubernetes的持续集成与部署的方法和系统 - Google Patents
基于Kubernetes的持续集成与部署的方法和系统 Download PDFInfo
- Publication number
- CN109032645A CN109032645A CN201810849147.6A CN201810849147A CN109032645A CN 109032645 A CN109032645 A CN 109032645A CN 201810849147 A CN201810849147 A CN 201810849147A CN 109032645 A CN109032645 A CN 109032645A
- Authority
- CN
- China
- Prior art keywords
- test
- module
- source code
- kubernetes
- code 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000012360 testing method Methods 0.000 claims abstract description 71
- 238000011990 functional testing Methods 0.000 claims abstract description 21
- 230000004044 response Effects 0.000 claims abstract description 17
- 241000380131 Ammophila arenaria Species 0.000 claims description 6
- 230000008569 process Effects 0.000 claims description 4
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000002045 lasting effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Classifications
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
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)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于Kubernetes的持续集成与部署的方法和系统,所述方法包括:S1:响应于接收到任意一个功能模块,对其所对应的源代码文件进行验证,如果源代码文件通过验证,生成一测试任务;S2:创建一测试节点,将所述测试任务分配至该测试节点以对所述源代码文件进行功能测试;S3:响应于所述测试任务对应的源代码文件通过功能测试,针对该源代码文件所对应的功能模块生成至少一个容器镜像,根据预定的部署策略以将该功能模块推送至Kubernetes平台进行服务部署。本发明能够自动对功能模块的源代码文件进行测试,测试通过后生成容器镜像,并推送到Kubernetes平台之上按照预定的升级策略进行服务部署。
Description
技术领域
本发明涉及软件开发领域,属于一种基于Kubernetes的持续集成与部署的方法和系统。
背景技术
Kubernetes是一种容器编排引擎,是Google多年大规模容器管理技术的开源版本,可以帮助用户轻松管理集群,自动分发和调度容器应用程序。
持续集成与持续部署(CICD)是当前比较流行的软件开发流程。CICD与DevOps理念相结合,能够让软件在短周期内产出,确保软件随时可以被可靠地发布。
目前一套完整的CICD系统包含众多的服务,如果每个服务都手工进行安装和配置,则部署起来较复杂,需要时间较长,同时,部署至平台的服务程序受节点状态影响较大,容易发生故障。
发明内容
本发明的目的在于提供一种基于Kubernetes的持续集成与部署的方法和系统,能够对需要部署的功能模块所对应的源代码文件进行测试,如果该功能模块的源代码文件通过测试,生成至少一个与之相对应的容器镜像,并推送到Kubernetes平台之上按照预定的升级策略进行服务部署,以上过程全部为自动执行,极大地提高了软件开发以及软件部署的速度和效率。
为达到上述目的,本发明提供如下技术方案:
一种基于Kubernetes的持续集成与部署方法,所述方法包括:
S1:响应于接收到任意一个功能模块,对其所对应的源代码文件进行验证,如果源代码文件通过验证,生成一测试任务;
S2:创建一测试节点,将所述测试任务分配至该测试节点以对所述源代码文件进行功能测试;
S3:响应于所述测试任务对应的源代码文件通过功能测试,针对该源代码文件所对应的功能模块生成至少一个容器镜像,根据预定的部署策略以将该功能模块推送至Kubernetes平台进行服务部署。
进一步的,所述方法还包括:
响应于任意一个测试任务完成,删除与该测试任务对应的测试节点。
进一步的,所述预定的部署策略是指,
将通过测试的功能模块冗余地部署在Kubernetes平台上。
进一步的,所述预定的部署策略是指,
将通过测试的功能服务部署在Kubernetes平台的至少一个服务节点上;
所述至少一个服务节点属性相同。
进一步的,所述预定的部署策略是指,
采用helm引擎以进行功能模块的部署。
进一步的,所述方法还包括:
提供一用以对验证未通过的功能模块的源代码文件进行记录和追踪的问题跟踪模块,S1中,如果源代码文件未通过验证,将该源代码文件发送至该问题跟踪模块。
进一步的,所述方法还包括:
响应于接收到的任意一个功能模块被推送至Kubernetes平台、和/或被发送至问题跟踪模块,生成一开发文档以记录该功能模块的测试过程。
本发明还提及一种基于前述方法的基于Kubernetes的持续集成与部署的系统,所述系统包括代码仓库模块、代码审阅模块、任务引擎模块、功能测试模块、服务部署模块;
所述代码仓库模块用以接收功能模块、并且对接收的功能模块的源代码文件进行管理;
所述代码审阅模块用以对代码仓库中的源代码文件进行验证,如果源代码文件通过验证,生成一测试任务并且发送至任务引擎模块;
所述任务引擎模块用以创建测试节点,接收代码审阅模块发送的测试任务并且将测试任务分配至该测试节点;
所述功能测试模块用以对测试节点中的源代码文件进行功能测试;
所述服务部署模块响应于测试任务对应的源代码文件通过功能测试,针对该源代码文件所对应的功能模块生成至少一个容器镜像,根据预定的部署策略以将该功能模块推送至Kubernetes平台进行服务部署。
本发明的有益效果在于:
(1)采用helm引擎以实现功能模块的服务程序的快速部署。
(2)采用Kubernetes提供的服务冗余机制,实现功能模块的冗余部署,提高服务程序的稳定性。
(3)根据测试任务的数量以生成对应数量的测试节点,测试完成后删除对应的测试节点,能够同时进行多个功能模块的功能测试,实现功能测试的自动扩缩容。
(4)实现服务程序的自动测试和自动部署功能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。
附图说明
图1为本发明的基于Kubernetes的持续集成与部署的方法流程图。
图2为本发明的基于Kubernetes的持续集成与部署的系统结构图。
图3为本发明的服务程序的冗余部署的示意图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
持续部署是CICD的核心功能之一,并且Kubernetes也支持服务的升级回滚等持续部署操作。
本发明结合了这两个特性,针对当前CICD系统运行在Kubernetes之上的特点,提出一个基于Kubernetes的持续集成与部署的系统。利用此系统,当接收到一功能模块时,对该功能模块对应的源代码文件进行测试,如果该功能模块的源代码文件通过测试,生成至少一个与之相对应的容器镜像,并推送到Kubernetes平台之上按照预定的升级策略进行服务部署,以上过程全部为自动执行,极大地提高了软件开发以及软件部署的速度和效率。
结合图1、图2,本发明提出一种基于Kubernetes的持续集成与部署方法,所述方法包括:
S1:响应于接收到任意一个功能模块,对其所对应的源代码文件进行验证,如果源代码文件通过验证,生成一测试任务。
S2:创建一测试节点,将所述测试任务分配至该测试节点以对所述源代码文件进行功能测试。
S3:响应于所述测试任务对应的源代码文件通过功能测试,针对该源代码文件所对应的功能模块生成至少一个容器镜像,根据预定的部署策略以将该功能模块推送至Kubernetes平台进行服务部署。
基于前述方法,本发明还提及一种基于Kubernetes的持续集成与部署的系统,所述系统包括代码仓库模块、代码审阅模块、任务引擎模块、功能测试模块、服务部署模块。
所述代码仓库模块用以接收功能模块、并且对接收的功能模块的源代码文件进行管理。
所述代码审阅模块用以对代码仓库中的源代码文件进行验证,如果源代码文件通过验证,生成一测试任务并且发送至任务引擎模块。
所述任务引擎模块用以创建测试节点,接收代码审阅模块发送的测试任务并且将测试任务分配至该测试节点。
所述功能测试模块用以对测试节点中的源代码文件进行功能测试。
所述服务部署模块响应于测试任务对应的源代码文件通过功能测试,针对该源代码文件所对应的功能模块生成至少一个容器镜像,根据预定的部署策略以将该功能模块推送至Kubernetes平台进行服务部署。
在一些例子中,所述预定的部署策略是指,将通过测试的功能模块冗余地部署在Kubernetes平台上。
此处的冗余部署具有多种方式,本发明提出其中一种冗余部署方式,即将通过测试的功能服务部署在Kubernetes平台的至少一个服务节点上,所述至少一个服务节点属性相同。
事实上,Kubernetes的Deployment模块(部署模块)能够提供服务冗余机制,通过该机制,可以把CICD系统中的服务冗余地部署在平台之上。
结合图3,用户访问服务时,流量可以平均地分布在冗余地多个服务上。以代码仓库为例,Git服务1和Git服务2本身是无状态的,可以分布在2个节点上。他们共享后端的数据库和文件存储。当Git服务1所在的节点故障时,Git服务2仍能提供服务,达到了服务高可用的目的,提高了服务程序的可靠性。
进一步的,在另一些例子中,所述预定的部署策略是指,采用helm引擎以进行功能模块的部署。
一套完整的CICD系统包含众多的服务,如果每个服务都手工进行安装和配置,则部署起来较复杂,需要时间较长。Kubernetes的核心运行时是Docker,一种镜像化的容器方案,相比其它容器方案来说,能做到快速部署和快速启动。Kubernetes提供应用模板(helm)的功能,可以根据所需要的服务预先定制应用模板文件。
helm作为Kubernetes一个包管理引擎,基于chart的概念,有效的对Kubernetes上应用的部署进行了优化。Chart通过模板引擎,下方对接Kubernetes中services模型,上端打造包管理仓库。最后的使得Kubernetes中,对应用的部署能够达到像使用apt-get和yum一样简单易用。
例如:
使用此应用模板文件,可以做到CICD系统一键部署到Kubernetes平台之上,达到了快速部署的目的。
所述方法还包括:
响应于任意一个测试任务完成,删除与该测试任务对应的测试节点。
当测试任务发布到了任务引擎之后,任务引擎可以选择测试节点来执行测试任务。此处可以利用容器技术的优势,通过Kubernetes快速启动一个Pod来执行测试任务,等待测试任务执行完成后,快速销毁这个Pod。通过这种方式,任务引擎可以同时批量创建多个Pod进行测试,并且,由于Kubernetes中集群内部的每一个pod被指定了唯一的IP地址,用户程序可以通过相应的端口号无冲突地连接各个pod,达到了测试自动扩缩容的目的。
用户可以通过Kubernetes API手动管理pod,或者把管理工作交给一个管理器。
进一步的实施例中,所述方法还包括:
提供一用以对验证未通过的功能模块的源代码文件进行记录和追踪的问题跟踪模块,S1中,如果源代码文件未通过验证,将该源代码文件发送至该问题跟踪模块。
在另一些实施例中,为了对前述软件开发过程和软件部署功能做记录以便于管理,所述方法还包括:
响应于接收到的任意一个功能模块被推送至Kubernetes平台、和/或被发送至问题跟踪模块,生成一开发文档以记录该功能模块的测试过程。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。
Claims (8)
1.一种基于Kubernetes的持续集成与部署方法,其特征在于,所述方法包括:
S1:响应于接收到任意一个功能模块,对其所对应的源代码文件进行验证,如果源代码文件通过验证,生成一测试任务;
S2:创建一测试节点,将所述测试任务分配至该测试节点以对所述源代码文件进行功能测试;
S3:响应于所述测试任务对应的源代码文件通过功能测试,针对该源代码文件所对应的功能模块生成至少一个容器镜像,根据预定的部署策略以将该功能模块推送至Kubernetes平台进行服务部署。
2.根据权利要求1所述的基于Kubernetes的持续集成与部署方法,其特征在于,所述方法还包括:
响应于任意一个测试任务完成,删除与该测试任务对应的测试节点。
3.根据权利要求1所述的基于Kubernetes的持续集成与部署方法,其特征在于,所述预定的部署策略是指,
将通过测试的功能模块冗余地部署在Kubernetes平台上。
4.根据权利要求3所述的基于Kubernetes的持续集成与部署方法,其特征在于,所述预定的部署策略是指,
将通过测试的功能服务部署在Kubernetes平台的至少一个服务节点上;
所述至少一个服务节点属性相同。
5.根据权利要求3或者4所述的基于Kubernetes的持续集成与部署方法,其特征在于,所述预定的部署策略是指,
采用helm引擎以进行功能模块的部署。
6.根据权利要求1所述的基于Kubernetes的持续集成与部署方法,其特征在于,所述方法还包括:
提供一用以对验证未通过的功能模块的源代码文件进行记录和追踪的问题跟踪模块,S1中,如果源代码文件未通过验证,将该源代码文件发送至该问题跟踪模块。
7.根据权利要求6所述的基于Kubernetes的持续集成与部署方法,其特征在于,所述方法还包括:
响应于接收到的任意一个功能模块被推送至Kubernetes平台、和/或被发送至问题跟踪模块,生成一开发文档以记录该功能模块的测试过程。
8.一种基于Kubernetes的持续集成与部署的系统,其特征在于,所述系统包括代码仓库模块、代码审阅模块、任务引擎模块、功能测试模块、服务部署模块;
所述代码仓库模块用以接收功能模块、并且对接收的功能模块的源代码文件进行管理;
所述代码审阅模块用以对代码仓库中的源代码文件进行验证,如果源代码文件通过验证,生成一测试任务并且发送至任务引擎模块;
所述任务引擎模块用以创建测试节点,接收代码审阅模块发送的测试任务并且将测试任务分配至该测试节点;
所述功能测试模块用以对测试节点中的源代码文件进行功能测试;
所述服务部署模块响应于测试任务对应的源代码文件通过功能测试,针对该源代码文件所对应的功能模块生成至少一个容器镜像,根据预定的部署策略以将该功能模块推送至Kubernetes平台进行服务部署。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810849147.6A CN109032645A (zh) | 2018-07-28 | 2018-07-28 | 基于Kubernetes的持续集成与部署的方法和系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810849147.6A CN109032645A (zh) | 2018-07-28 | 2018-07-28 | 基于Kubernetes的持续集成与部署的方法和系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109032645A true CN109032645A (zh) | 2018-12-18 |
Family
ID=64647429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810849147.6A Pending CN109032645A (zh) | 2018-07-28 | 2018-07-28 | 基于Kubernetes的持续集成与部署的方法和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109032645A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815704A (zh) * | 2019-01-24 | 2019-05-28 | 中国—东盟信息港股份有限公司 | 一种Kubernetes云原生应用的安全检测方法及其系统 |
CN109981351A (zh) * | 2019-03-06 | 2019-07-05 | 浪潮通用软件有限公司 | 一种私有云部署方法 |
CN110276199A (zh) * | 2019-06-25 | 2019-09-24 | 中国—东盟信息港股份有限公司 | 一种Kubernetes云原生应用的动态安全检测方法 |
CN110704048A (zh) * | 2019-09-29 | 2020-01-17 | 北京浪潮数据技术有限公司 | 一种应用发布方法及相关装置 |
CN111142881A (zh) * | 2019-12-27 | 2020-05-12 | 浪潮云信息技术有限公司 | 一种基于kubernetes的编排charts自动化部署的系统及方法 |
CN111949244A (zh) * | 2020-08-01 | 2020-11-17 | 北京一览群智数据科技有限责任公司 | 一种全栈模块化系统集成方法 |
CN112711411A (zh) * | 2020-12-22 | 2021-04-27 | 宝付网络科技(上海)有限公司 | 一种基于Kubernetes及docker的CI/CD流水线系统 |
CN115421748A (zh) * | 2022-08-23 | 2022-12-02 | 苏州思萃工业互联网技术研究所有限公司 | 多云环境下kubernetes容器升级系统及方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160350105A1 (en) * | 2015-05-27 | 2016-12-01 | Runnable Inc. | Automatic communications graphing for a source application |
CN106293820A (zh) * | 2016-08-02 | 2017-01-04 | 山东大学 | 开发测试运维一体化系统、部署、全量以及增量更新方法 |
CN106873975A (zh) * | 2016-12-30 | 2017-06-20 | 武汉默联股份有限公司 | 基于Docker的devops持续交付与自动化系统及方法 |
CN106997297A (zh) * | 2017-03-31 | 2017-08-01 | 广东亿迅科技有限公司 | 一种基于DevOps的软件开发管理平台及方法 |
-
2018
- 2018-07-28 CN CN201810849147.6A patent/CN109032645A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160350105A1 (en) * | 2015-05-27 | 2016-12-01 | Runnable Inc. | Automatic communications graphing for a source application |
CN106293820A (zh) * | 2016-08-02 | 2017-01-04 | 山东大学 | 开发测试运维一体化系统、部署、全量以及增量更新方法 |
CN106873975A (zh) * | 2016-12-30 | 2017-06-20 | 武汉默联股份有限公司 | 基于Docker的devops持续交付与自动化系统及方法 |
CN106997297A (zh) * | 2017-03-31 | 2017-08-01 | 广东亿迅科技有限公司 | 一种基于DevOps的软件开发管理平台及方法 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109815704B (zh) * | 2019-01-24 | 2020-08-04 | 中国—东盟信息港股份有限公司 | 一种Kubernetes云原生应用的安全检测方法及其系统 |
CN109815704A (zh) * | 2019-01-24 | 2019-05-28 | 中国—东盟信息港股份有限公司 | 一种Kubernetes云原生应用的安全检测方法及其系统 |
CN109981351A (zh) * | 2019-03-06 | 2019-07-05 | 浪潮通用软件有限公司 | 一种私有云部署方法 |
CN110276199A (zh) * | 2019-06-25 | 2019-09-24 | 中国—东盟信息港股份有限公司 | 一种Kubernetes云原生应用的动态安全检测方法 |
CN110276199B (zh) * | 2019-06-25 | 2020-12-01 | 中国—东盟信息港股份有限公司 | 一种Kubernetes云原生应用的动态安全检测方法 |
CN110704048A (zh) * | 2019-09-29 | 2020-01-17 | 北京浪潮数据技术有限公司 | 一种应用发布方法及相关装置 |
CN111142881B (zh) * | 2019-12-27 | 2023-10-27 | 浪潮云信息技术股份公司 | 一种基于kubernetes的编排charts自动化部署的系统及方法 |
CN111142881A (zh) * | 2019-12-27 | 2020-05-12 | 浪潮云信息技术有限公司 | 一种基于kubernetes的编排charts自动化部署的系统及方法 |
CN111949244A (zh) * | 2020-08-01 | 2020-11-17 | 北京一览群智数据科技有限责任公司 | 一种全栈模块化系统集成方法 |
CN112711411A (zh) * | 2020-12-22 | 2021-04-27 | 宝付网络科技(上海)有限公司 | 一种基于Kubernetes及docker的CI/CD流水线系统 |
CN112711411B (zh) * | 2020-12-22 | 2024-02-23 | 宝付网络科技(上海)有限公司 | 一种基于Kubernetes及docker的CI/CD流水线系统 |
CN115421748A (zh) * | 2022-08-23 | 2022-12-02 | 苏州思萃工业互联网技术研究所有限公司 | 多云环境下kubernetes容器升级系统及方法 |
CN115421748B (zh) * | 2022-08-23 | 2023-09-01 | 苏州思萃工业互联网技术研究所有限公司 | 多云环境下kubernetes容器升级系统及方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109032645A (zh) | 基于Kubernetes的持续集成与部署的方法和系统 | |
CN107147735B (zh) | 一种基于分层结构的分布式账本系统 | |
CN107302475A (zh) | 一种面向分布式存储集群的测试方法及装置 | |
CN109981279B (zh) | 一种区块链系统、通信方法、装置、设备及介质 | |
CN110889729A (zh) | 一种基于区块链网络的数据验证方法和装置 | |
CN105049260B (zh) | 日志管理方法和装置 | |
CN108132987A (zh) | 一种数据查询系统及方法 | |
WO2018145559A1 (zh) | 持续集成流水线的生成方法和系统 | |
CN109274782A (zh) | 一种采集网站数据的方法及装置 | |
US9495253B2 (en) | Virtual snapshot system and method | |
CN108459961A (zh) | 一种测试用例测试失败后重测试的方法、客户端及服务器 | |
CN107038050B (zh) | 一种基于虚拟服务器的游戏配置加载方法 | |
CN112313629B (zh) | 备份和恢复验证 | |
CN107026876A (zh) | 一种文件数据访问系统及方法 | |
CN106686095A (zh) | 一种基于纠删码技术的数据存储方法及装置 | |
CN110543354A (zh) | 任务调度方法、装置、设备及存储介质 | |
CN104008441A (zh) | 一种自动提交版本库归档的任务管理系统及方法 | |
US20150363378A1 (en) | Managing document unit references to improve collaborative document editing | |
CN109325196A (zh) | 基于redis防止接口重复请求的方法 | |
CN107807869A (zh) | 一种测试系统和测试方法 | |
CN110059136A (zh) | 基于域名区块链的信息存储方法、设备及存储介质 | |
Rehman et al. | Scope management in agile versus traditional software development methods | |
CN106055326A (zh) | 一种程序处理方法及调度服务器 | |
CN103377125A (zh) | 一种代码测试方法、装置及系统 | |
CN104090763A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181218 |