基于gitlab的CICD流程规范

本文详细介绍了基于GitLab的持续集成与持续部署(CI/CD)流程规范,包括开发、测试、预发布和生产环境的自动化部署策略。通过Flyway实现数据库版本控制,确保代码与数据库同步。此外,文中还探讨了未来可能引入的代码质量检查和自动化测试。整个流程旨在提升测试效率,缩短问题定位时间,提高团队整体效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:这篇文章主要讲一讲基于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结合提升整体项目交付能力

在这里插入图片描述

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

在这里插入图片描述

### 使用 GitLab CI/CD 进行持续集成和部署 GitLab 提供了一个强大的内置工具链来支持持续集成 (CI) 和持续交付/部署 (CD),这使得开发者可以轻松实现自动化构建、测试以及部署流程。以下是关于如何配置并使用 GitLab CI/CD 的详细介绍。 #### 配置 `.gitlab-ci.yml` 文件 为了启用 GitLab CI/CD 功能,需要在项目的根目录下创建一个名为 `.gitlab-ci.yml` 的 YAML 文件。此文件定义了整个 CI/CD 流程的行为模式[^1]。该文件通常包含以下几个部分: - **stages**: 定义流水线的不同阶段(例如 `build`, `test`, `deploy`),这些阶段会按顺序执行。 - **jobs**: 每个 job 是流水线中的具体任务,job 可以分配到不同的 stages 下运行。 下面是一个简单的 `.gitlab-ci.yml` 示例,用于演示基本的 CI/CD 设置: ```yaml stages: - build - test - deploy variables: IMAGE_NAME: my-app-image build_job: stage: build script: - echo "Building the application..." - docker build -t $IMAGE_NAME . test_job: stage: test script: - echo "Running tests..." - pytest --junitxml=report.xml ./tests/ deploy_job: stage: deploy script: - echo "Deploying application..." - ssh user@server 'cd /path/to/app && git pull origin main' only: - main ``` 上述脚本展示了三个主要阶段:构建 (`build`)、测试 (`test`) 和部署 (`deploy`)。其中,在 `deploy_job` 中还设置了仅当分支为 `main` 时才触发部署逻辑。 #### 注册与管理 Runner 完成 `.gitlab-ci.yml` 文件编写之后,还需要注册至少一个 GitLab Runner 来实际执行流水线的任务。Runner 负责处理由 GitLab 发起的各种作业请求。可以通过命令行安装并注册共享或专用 runner 到指定实例上。 对于更复杂的环境需求,比如隔离的应用程序上下文或者依赖特定操作系统版本的情况,则可考虑利用 Docker 执行器类型的 Runners 或者其他高级选项如 Kubernetes Executor 等[^2]。 #### 凭证管理和安全性设置 如果项目涉及敏感数据访问权限控制等问题,那么合理地存储密码及其他机密信息就显得尤为重要。Jenkins 用户可能熟悉通过插件方式添加凭证的操作方法;而在 GitLab 中同样提供了类似的机制——即变量功能。可以在 Web UI 上面的安全区域里设定加密后的全局变量或是每条 pipeline 特定参数,并将其引用至 .yml 文件当中以便安全调用[^3]。 综上所述,借助完善的文档指导和技术社区的支持,任何团队都可以快速入门并充分利用好 GitLab 平台所提供的强大 CI/CD 工具集。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李先森&Mr.Li

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值