乐趣区

关于代码规范:研发管理DevOps最佳实践之三问三答

近日,极狐 (Gitlab) 江狐会·北京站在极狐北京 Demo Center 如期发展。

会上,极狐 (Gitlab) 高级解决方案架构师杨周带来了《研发治理 DevOps 最佳实际》主题分享,解答了如下备受关注的问题:

  • Git Flow 过期之后举荐用什么?
  • Java/VUE 老我的项目如何落地代码标准?
  • 为什么不该用 CI 做部署,而是 CD、GitOps?

心愿给广泛面临这些问题的开发人员尤其是研发负责人、架构师,以及开源和 DevOps 的爱好者们提供一些参考。

以下内容整顿自本次分享,enjoy~

Git Flow 过期了,那应该用什么呢?

Git Flow 是一种诞生于 2010 年的工作流,一篇名为《一个胜利的 Git 分支模型》的文章将 Git Flow 推入了开发团队的视线。但在 2020 年,其作者 Vincent Driessen 发表 Git Flow 不适宜「继续交付」

起因是Git Flow 适宜当年多版本共存的软件,而古代软件大部分只有「最新版」,比方网站关上永远是「最新版」、App 会提醒降级而不会保护旧版本。所以 Git Flow 的公布分支(如 release/1.2.0)和反对分支(如 support/1.x)不再罕用。

那么问题来了:Git Flow 过期了,咱们应该用什么呢?

当初业界罕用的 Git Workflow 有「繁难 Git Flow」、「GitHub Flow」、「GitLab Flow」,集体总结它们的特点如下,大家可应需选用。

  • 繁难 Git Flow:保留 Git Flow 的双长期分支(main 和 develop)、几个长期分支(feature/xxx、bugfix/xxx、hotfix/xxx),而舍弃 release 和 support;
  • GitHub Flow:非常简单,拉取长期分支,合并到骨干即可;适宜人少的小我的项目,比方集体开源我的项目;
  • GitLab Flow:包含多种 Flow,比方「Production branch with GitLab Flow」、「Environment branches with GitLab Flow」、「Release branches with GitLab Flow」。

Java/VUE 老我的项目如何落地代码标准?

如何做一名优良的研发工程师?从改善每一行代码开始。若有《程序猿的自我涵养》,缩进、换行、大小写、正文,应该大写加粗印在扉页上。😄

而教训通知咱们,标准写在纸上或者口头传播仍然不尽人意,因而,强制主动执行的主动查看代码标准(lint)出圈了。业界出名的代码标准都有配套的 lint,比方 VUE 用 eslint,Java 用 checkstyle。新我的项目能够间接扫描整个目录,把查看命令放在 CI 里,即可实现在代码合并申请时强制查看标准。比方:

  • VUE 我的项目执行 npm run lint
  • Java 我的项目执行 ./gradlew check

然而,如果老我的项目的标准报错太多,就须要所有人暂停手头工作,一起清理。这样做的老本太高了,哒咩🙅,所以很多老我的项目只能越来越差。

新的解决方案是 采纳增量扫描,即只扫描本次批改的文件。这样,随着工夫的推移,只有老我的项目还在保护,代码就会越来越洁净丑陋。

为什么不要用 CI 做部署,而是用 CD、GitOps?

CI(Continuous Integration)和 CD(Continuous Deployment)都是自动化流水线,但 CD 更适宜部署。区别在于:

  1. CI 基于代码,而 CD 基于包。当须要回滚时,CI 必须从新编译打包,可能很久,而 CD 霎时获取上一个版本的包,升高了「故障复原工夫」。
  2. CI 难以辨别多个环境,而 CD 具备多环境配置管理,比方 testing、staging、production。
  3. CI 没有上线审批,而 CD 有,能够为每个环境设置审批人。

但 CD 依然有毛病,即因为它短少基础设施的残缺信息(比方 K8s yaml),在劫难复原、为客户私有化部署时,无奈霎时创立新环境。

GitOps 解决了 CD 的这个毛病,实现了:

  1. 基础设施即代码(IaC):Git 作为繁多可信源,保留残缺的基础架构信息,可实现疾速部署新环境(劫难复原、销售私有化产品)。
  2. 合并申请(MRs):借助 Git 的合并申请评审机制,让部署可评审、记录可追溯。
  3. 更平安:因为 Git 中保留了残缺的基础设施配置,可通过 Agent 拉取失效,而不像 CD 流水线推送须要裸露服务器网络权限。

极狐 GitLab 同时反对 CI、CD、GitOps,倡议大家应用 CD 和 GitOps 进行部署。

极狐 GitLab 一体化 DevOps 平台

从设计到投产,一个平台笼罩 DevSecOps 全流程。极狐 GitLab 帮忙团队更快、更平安地交付更好的软件,晋升研运效力,实现 DevOps 价值最大化。

退出移动版