基于gitlab的CICD流程规范

基于gitlab的CICD流程规范前言:这篇文章主要讲一讲基于gitlab的CICD流程规范基于gitlab的CICD流程规范一、简介二、CICD流程图三、CICD说明四、结合CICD流程拓展1、业务代码-数据库基于flyway实现版本控制2、数据库版本控制3、二进制或内置五、代码质量检查及自动化测试(未来)六、疑问解答与加群交流学习一、简介为了提升线下测试效率,缩短测试时间,提升提测代码质量,规范流程,缩短测试准备和执行时间,缩短问题定位时间,提供预测性指标,规范CICD流程,以提升整体团队效率。二、CICD流程图三、CICD

大家好,又见面了,我是你们的朋友全栈君。

前言:这篇文章主要讲一讲基于gitlab的CICD流程规范

一、简介

为了提升线下测试效率,缩短测试时间,提升提测代码质量,规范流程,缩短测试准备和执行时间,缩短问题定位时间,提供预测性指标,规范CICD流程,以提升整体团队效率。

二、CICD流程图

在这里插入图片描述

三、CICD说明

发布分为大致三个环境:
1、开发环境对应于dev分支
2、测试环境对应于test分支
3、预发布环境对应uat分支
4、生产环境对应于master分支

CICD流程如下:

#开发环境
推送代码->编译->生成的jar包发布到私服->打包为docker镜像->推送到Harbor镜像仓库->部署到k8s集群->健康检查(成功,微信通知,c结束返回成功|失败,微信通知,ci结束返回失败

#测试环境
1、推送代码->编译->生成的jar包发布到私服->打包为docker镜像->推送到Harbor镜像仓库(成功,微信通知,c结束返回成功|失败,微信通知,ci结束返回失败)
2、测试人员触发部署到k8s集群->健康检查(成功,微信通知,c结束返回成功|失败,微信通知,ci结束返回失败)

预发布环境
1、推送代码->编译->生成的jar包发布到私服->打包为docker镜像->推送到Harbor镜像仓库(成功,微信通知,c结束返回成功|失败,微信通知,ci结束返回失败)
2、测试人员|运维人员 触发部署到k8s集群->健康检查(成功,微信通知,c结束返回成功|失败,微信通知,ci结束返回失败)

生产环境
1、推送代码->编译->生成的jar包发布到私服->打包为docker镜像->推送到Harbor镜像仓库(成功,微信通知,c结束返回成功|失败,微信通知,ci结束返回失败)
2、运维人员 触发部署到k8s集群->健康检查(成功,微信通知,c结束返回成功|失败,微信通知,ci结束返回失败)

实现效果如下:
1、自动触发构建-test
在这里插入图片描述
2、自动触发构建-master(人工确认部署)
在这里插入图片描述
实现细节如下:

步骤为:
1、配置环境变量
2、拉取代码
3、编译(打包和推送到私服)
4、编译产物修改名称(用作部署指定版本)
5、运行程序
6、反馈编译状态结果

四、结合CICD流程拓展

1、业务代码-数据库基于flyway实现版本控制

引入原因:

  • Schema 变更往往会添加或重命名多个列或表。如果应用程序版本与 schema 版本不匹配,还有可能彻底破坏应用程序的正常运行。最后,由于存在两套不同的系统,通过应用程序升级来协调数据库变更也比较困难。

2、数据库版本控制

FlyWay 允许用户轻松创建各数据库版本、跟踪数据库迁移并轻松完成 schema 变更的前滚与回滚——整个过程无需配合定制构建解决方案。

3、二进制或内置

可以选择在应用程序的启动过程中、或者以二进制可执行文件的形式运行 Flyway。用户可以在代码中直接使用此工具,使其在启动时能够检查版本功能并运行适当迁移,从而令数据库与应用程序的版本保持同步。当然也可以临时运行 cmd 行,在无需重建整体应用程序的前提下为现有数据库提供良好的灵活性。

使用后操作数据库的改变:
对于数据库表接口的变更就要关闭这几个途径

  1. 直接通过工具登录数据去修改表结构
  2. 已经发布的sql脚本不允许修改

正确的表结构调整途径:
在flyway脚本配置路径下编写新的脚本,启动程序来执行变更。这样可以获得几个很大的好处:

  1. 脚本受Git版本管理控制,可以方便的找到过去的历史
  2. 脚本在程序启动的时候先加载,再提供接口服务,一起完成部署步骤
  3. 所有表结构的历史变迁,在管理目录中根据版本号就能很好的追溯

五、代码质量检查及自动化测试(未来)

开发层面建议:

  1. 每次 Review 的代码量不要太多,控制在 400 行以内
  2. 最好的建议是将一次 Review 的时间控制在 60 分钟以内
  3. 提交 Review 之前,需要做严格的自我检查,根据 Checklist

引入原因:

  • 与动态分析相比,执行速度更快;
  • 可以对代码质量维护进行自动化;
  • 在早期阶段 (尽管不是所有阶段) 可以自动检索 bug;
  • 在早期阶段可以自动发现安全问题;

SonarQube 是一种很流行的静态分析工具,用于持续检查代码库的代码质量和安全性,并在代码评审期间指导开发团队。SonarQube 可与 CI/CD 集成,进行自动化代码检查。它还提供了质量管理工具帮你主动纠正错误:IDE 集成、Jenkins 集成和代码评审工具。

访问地址:https://www.sonarqube.org

关键特性:

  • 多语言支持;
  • 安全性分析;
  • 发布质量代码;
  • 可维护性;
  • 可以识别蹊跷的问题

引入集成测试等相关测试平台与Devops结合提升整体项目交付能力

在这里插入图片描述

六、疑问解答与加群交流学习

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/130244.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 创建InetAddress对象的四个静态方法[通俗易懂]

    创建InetAddress对象的四个静态方法[通俗易懂]InetAddress类是Java中用于描述IP地址的类。它在java.net包中。在Java中分别用Inet4Address和Inet6Address类来描述IPv4和IPv6的地址。这两个类都是InetAddress的子类。由于InetAddress没有public的构造方法,因此,要想创建InetAddress对象,必须得依靠它的四个静态方法。InetAddress可以通过getLocalH

    2022年6月23日
    27
  • LNMP环境的搭建

    LNMP环境的搭建

    2021年10月8日
    35
  • pso粒子群优化算法例题_多目标优化算法

    pso粒子群优化算法例题_多目标优化算法粒子群算法属于智慧算法的一类,与该类算法类似的还有蚁群算法,遗传算法等。大家可以将这几种算法进行比较。粒子群优化算法(ParticleSwarmOptimization,PSO)属于进化算法的一种,是通过模拟鸟群捕食行为设计的。从随机解出发,通过迭代寻找最优解,通过适应度来评价解的品质。在这里,我们举一个例子来深入理解一下该算法:假设有一鸟群,在一座岛上某个地方放有食物,但是鸟群并不知道食…

    2022年10月11日
    3
  • idea2022.01 激活码【中文破解版】2022.03.07

    (idea2022.01 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年4月2日
    76
  • Executors和ThreadPoolExecutor学习整理

    任务的执行与线程池(上) https://mp.weixin.qq.com/s/p3JZERyZXnF8jR_3KKIGJA 任务的执行与线程池(下) https://mp.weixin.qq.com/s/iUAaVXIB8rCzP_GeDhIlqAjava并发编程–Executor 框架 https://www.cnblogs.com/MOBIN/p/5436482.html线程…

    2022年2月27日
    34
  • Yolov5更换backbone,与模型压缩(剪枝,量化,蒸馏)

    Yolov5更换backbone,与模型压缩(剪枝,量化,蒸馏)目前支持更换yolov5的backbone主干网络为Ghostnet,以及采用eagleeye的剪枝方法支持对yolov5系列的剪枝。后续,将会添加更多更轻量,更优秀的主干网络,比如swintrans,…

    2022年8月16日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号