基于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结合提升整体项目交付能力

在这里插入图片描述

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

在这里插入图片描述

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)
blank

相关推荐

  • 10款sublime插件推荐

    10款sublime插件推荐1. PackageControl作为安装SublimeText插件的必备利器,PackageControl是这款编辑器的标配,可以方便开发人员快速安装需要的插件。2. Git在工作中,版本控制软件最常用的软件之一,而最流行的VCS是 Git。你是否厌倦了保存文本文件,并切换回终端运行一些Git命令。如果你能从文本编辑器本身执行Git命令

  • 运行时异常和检查性异常区别

    运行时异常和检查性异常区别运行时异常和检查性异常区别

  • 工具说明书 – 网页死链检测工具XENU及其名字来历「建议收藏」

    工具说明书 – 网页死链检测工具XENU及其名字来历「建议收藏」Xenu’sLinkSleuth是一个免费的小工具,Windows版本,给给定的URL或网页文件进行死链分析,给出报告。访问死链,一般会返回:404NotFound。TheHTTP404NotFoundclienterrorresponsecodeindicatesthattheservercan’tfindtherequestedresource.Linksthatleadtoa404pageareoftencalledbrok.

  • 低成本高利润产品(高精度测量)

    1,TM7705是完整的16位低成本Σ-Δ模数转换器(ADC);该芯片完全兼容AD7705,程序可以直接替换;2,TM7705两路全差分输入通道,在定制比率应用器件时,差分基准电压输入还能提供极大的灵活性;3,三线串行接口;4,SPI®,QSPI?,MICROWIRE?,DSP兼容;5,SCLK上可接受施密特触发器输入;6,提供模拟输入缓冲;7,工作电压2.7V至3.3V或4.75V…

  • Tomcat安装及配置教程[通俗易懂]

    Tomcat安装及配置教程[通俗易懂]步骤一:下载Tomcat链接如下:https://tomcat.apache.org/注意:要根据自己的JDK版本选择Tomcat的版本。因本人java版本为10.0.2,故选择Tomcat9.0.31版本(Windows请自行选择64位或32位)步骤二:配置环境变量新建系统环境变量:修改系统Path(变量值末尾添加%CATALINA_HOME%\bin…

  • idea建立springboot+mybatis项目_idea新建一个javaweb项目

    idea建立springboot+mybatis项目_idea新建一个javaweb项目亲测可用!!!https://blog.csdn.net/weixin_42685022/article/details/82215893

发表回复

您的电子邮箱地址不会被公开。

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