交付中心提供的流水线任务包括如下类型的子任务,并提供了统一的质量门禁配置功能。
质量门禁是为了控制流水线任务的质量,作用于代码检查、自动化接口测试、编译构建子任务。子任务在执行时错误数量需在合理范围内,否则不允许通过。门禁的通过条件包括单元测试的通过率,代码检查的缺陷数量、漏洞数量、坏味道数量、代码重复率,以及接口测试的通过率。
代码检查集成了SonarQube代码质量管理工具,延用了其对代码质量的判断规则。
支持对Java、Python、JavaScript、PHP、Web、XML、JSP多种编程语言的代码进行检查。
代码质量:按对代码的影响程度从低到高,将检查结果分为坏味道、漏洞、缺陷三种类型;按严重程度从低到高分为次要、提示、主要、严重、阻断五个等级。
代码重复率:整个代码库中重复代码的概率,越低则表示代码的质量越好。
集成Postman插件(一款功能强大的网页调试和发送网页HTTP请求的Chrome插件),通过对HTTP请求的创建和发送,完成对软件API接口请求、响应性能的测试。
将代码编译构建为软件包(Jar包、War包、Helm包、容器镜像)。支持的构建步骤包括代码检出、构建、镜像构建、镜像上传、制作Helm包、软件包上传、运行Pipeline脚本、运行shell脚本、运行Windows批处理脚本。
软件包类型
Helm包:基于Helm打包机制以及扩展本地镜像的能力设计的可以一键式部署的应用包,简化了应用部署过程,您无需上传多个镜像,仅通过一个应用包即可快速的部署应用。
War包、Jar包:传统的Java工程软件包。
代码检出:指定待构建的代码库和分支。
构建:选择构建环境,以及是否进行单元测试。
单元测试:对软件中的最小可测试单元进行检查和验证。
镜像构建/镜像上传:将代码构建为容器镜像并上传到PaaS平台的[软件中心/镜像仓库]。
制作Helm包:将构建生成的容器镜像制作为Helm安装包。
软件包上传:将构建生成的Jar包、War包或Helm包上传到[软件中心/应用仓库]。
执行脚本:编译构建所需的脚本。
Pipeline脚本:一套运行于Jenkins上的工作流框架,将原本独立运行于单个或者多个节点的任务连接起来,实现单个任务难以完成的复杂流程编排与可视化,帮助Jenkins实现从CI到CD与DevOps的转变。当以上任务无法满足需求时,可自定义Pipeline脚本。
Windows批处理脚本:在Windows平台下,有时会通过脚本来做一些快速的批量的操作,不仅节省时间,使用起来还很方便,可以进行批量处理文件,杀死进程等操作。
shell脚本:与Windows批处理相似,但比Windows批处理更强大,比用其他编程程序编辑的程序效率更高,它使用了Linux/Unix下的命令。
自定义类型任务与编译构建任务相似,支持的步骤相同。区别在于自定义类型任务不是以编译构建为目的,还可以使用其中某些步骤来支持流水线任务的顺利运行。例如,在流水线任务中插入执行脚本等。
在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。
发起人工审批流程,审批通过后方可运行下一任务。
编译构建生成的软件包(Jar包、War包、Helm包、容器镜像),可以将其保存到其他PaaS平台。
流水线仅支持升级操作。第一次的部署操作需要您首先通过“编译构建”将代码构建为软件包,上传至软件仓库,再将软件包部署到应用组中。第一次部署完成后的升级操作均可以通过流水线执行,将再次编辑构建生成的新版本软件包部署到开发环境、测试环境、生产环境,完成环境中软件包的升级,包括滚动升级和灰度升级两种方式。
开发环境、测试环境、生产环境即为应用组。
通过新的服务实例逐个更新来实现零停机的部署升级。即先升级并启动一台新版本,再停止其老版本,使得在整个滚动过程期间,保证始终有可用的副本在运行,从而平滑地发布新版本。优点是节约资源,不需要同时运行两倍的实例个数。缺点是回滚过程困难。
和滚动升级一样,灰度升级也会启动一个并存的新版应用。不同的是灰度升级支持新旧版服务间流量权重的自定义配置,新旧版本可同时对外提供服务,待新版验证完毕即可完成升级或取消升级,可以保证整体系统的稳定和平滑过渡。