本发明涉及计算机领域,尤其涉及一种项目交付方法、装置、设备及存储介质。
背景技术:
1、在中小型公司中项目的迭代需要维护一套工具,很多公司并没有时间精力投入devops的流程维护,又期望可以快速展开项目开发构建部署流程,同时需要将项目以镜像的方式部署到kubernetes上并减少过程失误率,从而提升效率。
2、在项目交付中,通常会使用devstream或者kyverno,而devstream该工具可以让该类企业快速打通项目的构建镜像的所有前置流程,但是唯独缺少了部署的能力校验资源和注入资源的能力同时只能支持通过argocd;而利用kyverno是kyverno在kubernetes集群中作为动态准入控制器运行,显然不具备项目创建镜像构建这些行为能力,但是他完善devstream部署流的支撑能力不足的问题。
技术实现思路
1、本发明的主要目的在于解决项目交付效率低的技术问题。
2、本发明第一方面提供了一种项目交付方法,所述项目交付方法包括:
3、接收项目交付请求,所述项目交付请求中携带有目标项目,通过devstream初始化所述目标项目,以创建代码库及工作流,其中所述代码库通过gitlab创建,所述工作流通过jenkins创建;
4、根据所述代码库,通过gitlab钩子,触发执行jenkins中构建的工作流,生成镜像,并通过所述devstream,基于所述镜像创建pod;
5、根据预设配置模版及所述代码库,渲染得到yaml文件,并根据预设策略规则,通过kyverno对所述yaml文件进行资源校验;
6、执行所述yaml文件,通过所述kyverno完成对所述pod的部署。可选的,在本发明第一方面的第一种实现方式中,所述根据预设配置模版及所述代码库,渲染得到yaml文件,并根据预设策略规则,通过kyverno对所述yaml文件进行资源校验包括:
7、监听所述gitlab中所述代码库对应的pipeline状态;
8、若所述pipeline状态有更新变化,则根据预设配置模版及所述代码库,渲染得到新的yaml文件;
9、根据预设策略规则,通过kyverno,对所述新的yaml文件进行资源校验。
10、可选的,在本发明第一方面的第二种实现方式中,所述根据预设策略规则,通过kyverno,对所述新的yaml文件进行资源校验包括:
11、若预设策略规则发生改变,则获取改变的预设策略规则;
12、将所述改变的预设策略规则注入到所述新的yaml文件中;
13、通过kyverno,对所述新的yaml文件进行资源校验。
14、可选的,在本发明第一方面的第三种实现方式中,所述监听所述gitlab中所述代码库对应的pipeline状态包括:
15、监听所述gitlab中所述代码库;
16、获取所述代码库的分支占位符或标签占位符;
17、根据所述分支占位符或所述标签占位符,获取基于所述代码库的分支或标签对应执行的pipeline的状态标识占位符;
18、根据所述状态标识占位符,查询所述代码库对应的pipeline状态。
19、可选的,在本发明第一方面的第四种实现方式中,所述根据预设配置模版及所述代码库,渲染得到yaml文件包括:
20、通过模板包,定义yaml文件格式,得到预设配置模版;
21、根据所述代码库,得到yaml文件内容,并将所述yaml文件内容解析为结构体;
22、将所述预设配置模版及解析的yaml文件内容合并,得到渲染后的yaml文件。
23、可选的,在本发明第一方面的第五种实现方式中,所述根据所述代码库,通过gitlab钩子,触发执行jenkins中构建的工作流,生成镜像,并通过所述devstream,基于所述镜像创建pod包括:
24、提交项目代码,所述代码库捕获所述项目代码,并创建触发条件及pipeline;
25、执行所述pipeline,通过gitlab钩子,触发执行jenkins中构建的工作流,生成镜像;
26、通过所述devstream,基于所述镜像创建pod。
27、可选的,在本发明第一方面的第六种实现方式中,所述接收项目交付请求,所述项目交付请求中携带有目标项目,通过devstream初始化所述目标项目,以创建代码库及工作流之前,还包括包括:
28、推送项目选择菜单;
29、根据所述项目选择菜单的选择结果,得到目标项目;
30、通过devstream初始化所述目标项目。
31、本发明第二方面提供了一种项目交付设备,包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;所述至少一个处理器调用所述存储器中的所述指令,以使得所述项目交付设备执行上述的项目交付方法。
32、本发明的第三方面提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的项目交付方法。
33、在本发明实施例中,接收项目交付请求,所述项目交付请求中携带有目标项目,通过devstream初始化所述目标项目,以创建代码库及工作流,其中所述代码库通过gitlab创建,所述工作流通过jenkins创建;根据所述代码库,通过gitlab钩子,触发执行jenkins中构建的工作流,生成镜像,并通过所述devstream,基于所述镜像创建pod;根据预设配置模版及所述代码库,渲染得到yaml文件,并根据预设策略规则,通过kyverno对所述yaml文件进行资源校验;执行所述yaml文件,通过所述kyverno完成对所述pod的部署。本发明中,首先通过gitlab创建代码库,通过jenkins创建工作流,然后,根据代码库,触发执行jenkins中构建的工作流,生成镜像,再渲染得到yaml文件,通过kyverno对yaml文件进行资源校验,完成对pod的部署,能通过kyverno和devstream的结合快速完成项目交付,不用过多关注devops过程,减轻相应支出,提供项目交付效率。
1.一种项目交付方法,其特征在于,所述项目交付方法包括:
2.根据权利要求1所述的项目交付方法,其特征在于,所述根据预设配置模版及所述代码库,渲染得到yaml文件,并根据预设策略规则,通过kyverno对所述yaml文件进行资源校验包括:
3.根据权利要求2所述的项目交付方法,其特征在于,所述根据预设策略规则,通过kyverno,对所述新的yaml文件进行资源校验包括:
4.根据权利要求2所述的项目交付方法,其特征在于,所述监听所述gitlab中所述代码库对应的pipeline状态包括:
5.根据权利要求1所述的项目交付方法,其特征在于,所述根据预设配置模版及所述代码库,渲染得到yaml文件包括:
6.根据权利要求1所述的项目交付方法,其特征在于,所述根据所述代码库,通过gitlab钩子,触发执行jenkins中构建的工作流,生成镜像,并通过所述devstream,基于所述镜像创建pod包括:
7.根据权利要求1所述的项目交付方法,其特征在于,所述接收项目交付请求,所述项目交付请求中携带有目标项目,通过devstream初始化所述目标项目,以创建代码库及工作流之前,还包括包括:
8.一种项目交付装置,其特征在于,所述项目交付装置包括:
9.一种项目交付设备,其特征在于,所述项目交付设备包括:存储器和至少一个处理器,所述存储器中存储有指令,所述存储器和所述至少一个处理器通过线路互连;
10.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7中任一项所述的项目交付方法。