技术摘要:
公开一种应用程序版本构建方法、装置、电子设备及机器可读存储介质。在本申请中,获取用户在可视化界面输入的与目标应用程序相关的版本构建参数;在检测到目标应用程序的代码存在变更时,创建与所述目标应用程序对应的携带了所述版本构建参数的版本构建任务;将所述版 全部
背景技术:
持续集成,是指将应用程序中的由多人分工的多次开发的部分代码集成一起,形 成应用程序的多个版本的主干代码,通过持续集成工具进行自动化方式的构建,编译和测 试,提供可以部署发布的应用程序。持续集成的目的,就是让应用程序的版本开发和部署可 以快速迭代,同时还能保持高质量。
技术实现要素:
本申请提供一种应用程序版本构建方法,所述方法包括: 获取用户在可视化界面输入的与目标应用程序相关的版本构建参数; 在检测到目标应用程序的代码存在变更时,创建与所述目标应用程序对应的携带 了所述版本构建参数的版本构建任务;其中,所述版本构建任务用于构建的变更后的所述 代码的目标应用程序的版本; 将所述版本构建任务调度至容器集群中的节点中运行,并在所述节点中生成用于 版本构建的缓存容器;其中,所述缓存容器用于对版本构建过程中的中间数据进行缓存; 在所述缓存容器中创建并启动用于版本构建的编译容器,并将所述版本构建参数 传入至所述编译容器,以使所述编译容器基于所述版本构建参数和所述中间数据构建生成 包含所述目标应用程序的版本的应用镜像。 可选的,在创建与所述目标应用程序对应的携带了所述版本构建参数的版本构建 任务之前,还包括: 检查与变更后的所述代码对应合入所述目标应用程序的代码版本分支是否为允 许执行构建状态; 若是,则进一步创建与所述目标应用程序对应的携带了所述版本构建参数的版本 构建任务;否则,禁止版本构建任务创建。 可选的,所述版本构建参数包括用于生成所述缓存容器的第一容器镜像,所述在 所述节点中生成用于版本构建的缓存容器,包括: 将所述第一容器镜像作为模板,在所述节点中生成所述第一容器镜像的第一容器 实例,将所述第一容器实例作为用于版本构建的缓存容器。 可选的,所述版本构建参数还包括用于生成所述编译容器的第二容器镜像、用于 编译目标应用程序的代码的编译环境和编译脚本; 所述在所述缓存容器中创建并启动用于版本构建的编译容器,并将所述版本构建 参数传入至所述编译容器,包括: 将所述第二容器镜像作为模板,在所述缓存容器中生成所述第二容器镜像的第二 4 CN 111552508 A 说 明 书 2/12 页 容器实例,将所述第二容器实例作为用于版本构建的编译容器; 在所述编译容器启动运行后,将所述版本构建参数中的编译环境、编译脚本,作为 参数传入至启动运行的所述编译容器。 可选的,所述版本构建参数还包括目标应用程序的代码获取地址,还包括: 所述编译容器从与基于所述代码获取地址对应的代码仓库中,获取目标应用程序 的代码,并基于传入的所述版本构建参数中的编译环境、编译脚本,对所述代码执行版本编 译,生成对应的目标应用程序的版本。 可选的,所述版本构建参数还包括作为目标应用程序的运行环境的第三容器镜 像,还包括: 启动以所述第三容器镜像作为模板的第三容器实例; 所述编译容器将生成的目标应用程序的版本,部署至所述第三容器实例中,并生 成所述第三容器实例作为模板的应用镜像; 并生成与所述应用镜像对应的应用镜像标签;其中,所述应用镜像标签至少包括 目标应用程序对应的代码版本分支标签和目标应用程序的代码提交标签。 可选的,还包括: 所述缓存容器将在所述编译容器生成目标应用程序的版本过程中所需的中间数 据预先缓存在所述缓存容器本地的第一缓存目录下,以使所述编译容器基于所述缓存容器 传入的环境变量,将所述第一缓存目录挂载到所述编译容器本地的第二缓存目录下,用于 生成目标应用程序的版本。 可选的,所述中间数据至少包括容器镜像、版本编译依赖数据。 可选的,所述中间数据还包括版本编译过程的编译中间产物数据;在所述编译容 器生成目标应用程序的版本过程中,还包括: 所述编译容器将所述编译中间产物数据保存至所述缓存容器中的第一缓存目录 中进行缓存。 可选的,所述容器集群为基于Kubernetes管理的Docker容器集群。 可选的,所述缓存容器和所述编译容器,都为Docker容器。 本申请还提供一种应用程序版本构建装置,所述装置包括: 获取模块,获取用户在可视化界面输入的与目标应用程序相关的版本构建参数; 创建模块,在检测到目标应用程序的代码存在变更时,创建与所述目标应用程序 对应的携带了所述版本构建参数的版本构建任务;其中,所述版本构建任务用于构建的变 更后的所述代码的目标应用程序的版本; 生成模块,将所述版本构建任务调度至容器集群中的节点中运行,并在所述节点 中生成用于版本构建的缓存容器;其中,所述缓存容器用于对版本构建过程中的中间数据 进行缓存; 构建模块,在所述缓存容器中创建并启动用于版本构建的编译容器,并将所述版 本构建参数传入至所述编译容器,以使所述编译容器基于所述版本构建参数和所述中间数 据构建生成包含所述目标应用程序的版本的应用镜像。 可选的,在创建与所述目标应用程序对应的携带了所述版本构建参数的版本构建 任务之前,还包括: 5 CN 111552508 A 说 明 书 3/12 页 检查模块,检查与变更后的所述代码对应合入所述目标应用程序的代码版本分支 是否为允许执行构建状态; 若是,则进一步创建与所述目标应用程序对应的携带了所述版本构建参数的版本 构建任务;否则,禁止版本构建任务创建。 可选的,所述版本构建参数包括用于生成所述缓存容器的第一容器镜像,所述生 成模块进一步: 将所述第一容器镜像作为模板,在所述节点中生成所述第一容器镜像的第一容器 实例,将所述第一容器实例作为用于版本构建的缓存容器。 可选的,所述版本构建参数还包括用于生成所述编译容器的第二容器镜像、用于 编译目标应用程序的代码的编译环境和编译脚本; 所述构建模块进一步: 将所述第二容器镜像作为模板,在所述缓存容器中生成所述第二容器镜像的第二 容器实例,将所述第二容器实例作为用于版本构建的编译容器; 在所述编译容器启动运行后,将所述版本构建参数中的编译环境、编译脚本,作为 参数传入至启动运行的所述编译容器。 可选的,所述版本构建参数还包括目标应用程序的代码获取地址,所述构建模块 进一步: 所述编译容器从与基于所述代码获取地址对应的代码仓库中,获取目标应用程序 的代码,并基于传入的所述版本构建参数中的编译环境、编译脚本,对所述代码执行版本编 译,生成对应的目标应用程序的版本。 可选的,所述版本构建参数还包括作为目标应用程序的运行环境的第三容器镜 像,所述构建模块进一步: 启动以所述第三容器镜像作为模板的第三容器实例; 所述编译容器将生成的目标应用程序的版本,部署至所述第三容器实例中,并生 成所述第三容器实例作为模板的应用镜像; 并生成与所述应用镜像对应的应用镜像标签;其中,所述应用镜像标签至少包括 目标应用程序对应的代码版本分支标签和目标应用程序的代码提交标签。 可选的,还包括: 缓存模块,所述缓存容器将在所述编译容器生成目标应用程序的版本过程中所需 的中间数据预先缓存在所述缓存容器本地的第一缓存目录下,以使所述编译容器基于所述 缓存容器传入的环境变量,将所述第一缓存目录挂载到所述编译容器本地的第二缓存目录 下,用于生成目标应用程序的版本。 可选的,所述中间数据至少包括容器镜像、版本编译依赖数据。 可选的,所述中间数据还包括版本编译过程的编译中间产物数据;在所述编译容 器生成目标应用程序的版本过程中,所述缓存模块进一步: 所述编译容器将所述编译中间产物数据保存至所述缓存容器中的第一缓存目录 中进行缓存。 可选的,所述容器集群为基于Kubernetes管理的Docker容器集群。 可选的,所述缓存容器和所述编译容器,都为Docker容器。 6 CN 111552508 A 说 明 书 4/12 页 本申请还提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接 口、所述处理器和所述存储器之间通过总线相互连接; 所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行 上述的方法。 通过以上实施例,通过将目标应用程序相关的版本构建参数模板化并以可视化界 面方式提供给用户进行版本构建,并在容器集群中构建创建多级容器进行版本构建以及对 版本构建过程中的中间数据缓存,生成包含目标应用程序的版本的应用镜像。一方面,降低 了开发人员进行版本构建的学习成本,提高了版本开发效率;另一方面,保证了版本并发构 建的隔离性,同时由于对版本构建过程中的中间数据缓存,避免了每次版本构建需要重新 下载构建依赖,提高了版本构建效率。 附图说明 图1是一示例性实施例提供的一种应用程序版本构建方法的流程图; 图2是一示例性实施例提供的一种版本构建的多级容器嵌套的架构示意图; 图3是一示例性实施例提供的一种电子设备的硬件结构图; 图4是一示例性实施例提供的一种应用程序版本构建装置的框图。