热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于gitlab的CICD流程规范

前言:这篇文章主要讲一讲基于gitlab的CICD流程规范基于gitlab的CICD流程规范一、简介二、CICD流程图三、CICD说明四、结合CICD流程拓展1、业务

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


基于gitlab的CICD流程规范

  • 一、简介
  • 二、CICD流程图
  • 三、CICD说明
  • 四、结合CICD流程拓展
    • 1、业务代码-数据库基于flyway实现版本控制
    • 2、数据库版本控制
    • 3、二进制或内置
  • 五、代码质量检查及自动化测试(未来)
  • 六、疑问解答与加群交流学习


一、简介

为了提升线下测试效率,缩短测试时间,提升提测代码质量,规范流程,缩短测试准备和执行时间,缩短问题定位时间,提供预测性指标,规范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结合提升整体项目交付能力

在这里插入图片描述


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

在这里插入图片描述


推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 2016 linux发行版排行_灵越7590 安装 linux (manjarognome)
    RT之前做了一次灵越7590黑苹果炒作业的文章,希望能够分享给更多不想折腾的人。kawauso:教你如何给灵越7590黑苹果抄作业​zhuanlan.z ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • 大坑|左上角_pycharm连接服务器同步写代码(图文详细过程)
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了pycharm连接服务器同步写代码(图文详细过程)相关的知识,希望对你有一定的参考价值。pycharm连接服务 ... [详细]
  • 现在比较流行使用静态网站生成器来搭建网站,博客产品着陆页微信转发页面等。但每次都需要对服务器进行配置,也是一个重复但繁琐的工作。使用DockerWeb,只需5分钟就能搭建一个基于D ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 【Windows】实现微信双开或多开的方法及步骤详解
    本文介绍了在Windows系统下实现微信双开或多开的方法,通过安装微信电脑版、复制微信程序启动路径、修改文本文件为bat文件等步骤,实现同时登录两个或多个微信的效果。相比于使用虚拟机的方法,本方法更简单易行,适用于任何电脑,并且不会消耗过多系统资源。详细步骤和原理解释请参考本文内容。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文探讨了容器技术在安全方面面临的挑战,并提出了相应的解决方案。多租户保护、用户访问控制、中毒的镜像、验证和加密、容器守护以及容器监控都是容器技术中需要关注的安全问题。通过在虚拟机中运行容器、限制特权升级、使用受信任的镜像库、进行验证和加密、限制容器守护进程的访问以及监控容器栈,可以提高容器技术的安全性。未来,随着容器技术的发展,还需解决诸如硬件支持、软件定义基础设施集成等挑战。 ... [详细]
  • Dockerfile构建镜像的指令和说明
    本文介绍了Dockerfile是用来构建镜像的文本文件,其中包含了构建镜像所需的指令和说明。通过创建一个Dockerfile文件并编写内容,可以快速创建自定义的镜像。文章还提供了一个示例,展示了如何使用Dockerfile创建一个本地构建的nginx镜像,并通过docker images命令查看镜像的版本。希望本文对大家的学习有所帮助,并希望大家多多支持编程笔记。 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
author-avatar
懷捻過呿_649
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有