共计 1902 个字符,预计需要花费 5 分钟才能阅读完成。
近日,极狐 (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 更适宜部署。区别在于:
- CI 基于代码,而 CD 基于包。当须要回滚时,CI 必须从新编译打包,可能很久,而 CD 霎时获取上一个版本的包,升高了「故障复原工夫」。
- CI 难以辨别多个环境,而 CD 具备多环境配置管理,比方 testing、staging、production。
- CI 没有上线审批,而 CD 有,能够为每个环境设置审批人。
但 CD 依然有毛病,即因为它短少基础设施的残缺信息(比方 K8s yaml),在劫难复原、为客户私有化部署时,无奈霎时创立新环境。
GitOps 解决了 CD 的这个毛病,实现了:
- 基础设施即代码(IaC):Git 作为繁多可信源,保留残缺的基础架构信息,可实现疾速部署新环境(劫难复原、销售私有化产品)。
- 合并申请(MRs):借助 Git 的合并申请评审机制,让部署可评审、记录可追溯。
- 更平安:因为 Git 中保留了残缺的基础设施配置,可通过 Agent 拉取失效,而不像 CD 流水线推送须要裸露服务器网络权限。
极狐 GitLab 同时反对 CI、CD、GitOps,倡议大家应用 CD 和 GitOps 进行部署。
极狐 GitLab 一体化 DevOps 平台
从设计到投产,一个平台笼罩 DevSecOps 全流程。极狐 GitLab 帮忙团队更快、更平安地交付更好的软件,晋升研运效力,实现 DevOps 价值最大化。