乐趣区

关于gitlab:写得了代码焊得了板嵌入式开发工程师必修之代码管理方案下

本文来自
武让 极狐 GitLab 高级解决方案架构师

💡 前两篇文章,作者介绍了嵌入式开发场景之

  • 代码治理特点与诉求,代码管理工具与形式之 SVN 与 Git
  • 嵌入式开发场景的代码治理分仓、权限与依赖问题,以及基于 Git 的多仓治理

👆戳链接即可回顾前情。

本文进一步介绍极狐 GitLab 针对嵌入式开发的解决方案。Enjoy~

3. 极狐 GitLab 嵌入式开发场景解决方案

围绕企业对于嵌入式开发场景的诉求,极狐 GitLab 提供了一整套解决方案,能够较好解决嵌入式开发场景下的种种问题,重点包含以下几局部内容。

3.1 高可用部署与灾备

企业进行代码对立治理的前提是代码管理系统具备 高可用、高性能以及容灾 等个性,能力撑持企业安全可靠的治理代码数据资产。

极狐 GitLab 专业版提供高 可用部署计划,是松耦合分布式架构,各组件均为多正本部署,各组件均可实现横向扩大。

极狐 GitLab 高可用架构通过横向扩大同时实现了高性能,针对从 1k 到 50k 用户数场景提供了不同的参考架构,满足不同用户规模的企业。

极狐 GitLab 同时提供 GEO 主从架构部署计划,该计划为一主多从架构,主从节点配置不用完全一致,主节点提供读写服务,从节点提供只读服务,数据在主从节点之间实时同步,可实现:

  • 通过拜访就近节点减速;
  • 负载分担;
  • 准实时备份;
  • 劫难复原。

当主节点呈现故障后可在几分钟内将从节点切换为主节点,复原服务。

极狐 GitLab GEO 在实现准高可用的同时,极大升高基础设施资源老本、部署和运维老本。

3.2 组织治理

极狐 GitLab 通过群组、子群组嵌套关系实现对企业简单组织关系的映射,嵌套最多反对 20 层,能够无效治理企业中的部门、组织、虚构组织、我的项目。

代码库隶属于群组或子群组,可在任意群组、子群组对仓库和人员权限进行治理。

  • 对于须要总览整个群组的 管理人员,能够将其在父群组上调配权限,该用户的权限将被继承到所有子群组和代码库中;
  • 对于须要查看局部内容的 项目经理,能够将其在某个子群组上调配权限,该用户只可看到子群组下所有子子群组和代码库的数据;
  • 对于只专一于具体功能模块的 开发人员,只须要将其在具体的代码库上调配权限即可,这样就实现了在分仓模式下的受权治理。

3.3 分支策略

前文提到,分支治理是 Git 的劣势,分支策略也是体现 Git 高效协同的重要价值,此外分支策略间接决定了研发流程的标准化

从事嵌入式开发的企业进行 DevOps 转型,首先要思考的就是分支策略怎么建设。以下是常见的几种分支模型,可供参考:

从极狐 GitLab 本身实际的角度登程,我更偏向两种分支策略:

  • 上图是极狐 GitLab 本人的分支策略,自身是属于版本分支 GitLab Flow,适宜多人协同的大、中型我的项目。相较于 Git Flow 裁剪了一些不必要的分支,升高复杂度;
  • 下图是对于小型我的项目举荐的极简分支策略,自身是属于 GitHub Flow,适宜单人或者较少人员协同的小型我的项目。

须要留神的是,没有所谓的最佳分支策略,因为不同企业的研发流程不一样,即使是同一家企业的不同团队或者同一个团队在不同期间的研发流程也是不一样的,这时候就 须要基于这些常见的分支策略总结和提炼一套属于本人的分支模型,并且对它继续进行测验和迭代。比方对于小型嵌入式我的项目,如果存在对不同的芯片或用户有定制版本,那么更倡议基于 GitHub Flow,退出 Release 分支来治理不同的交付版本。

3.4 分支爱护

当分支策略制订实现,如何保障开发人员遵循这套流程?那肯定是须要工具层面有束缚伎俩。

极狐 GitLab 提供分支爱护性能,能够限度开发人员间接向主分支提交代码,必须通过向 feature 分支或 dev 分支提交代码,再通过 Merge Requests 的形式合并到主分支,能够升高代码抵触,进步协同效率,同时也为开发团队践行代码评审提供了工具侧的落地撑持。

此外极狐 GitLab 专业版实现了 更加精细化的分支爱护治理,能够对于指定的用户设置推送和合并权限,以此保障分支代码的可审核和可追溯性,免费版只能较粗粒度的指定某一类用户角色,如 Developer、Maintainer。

3.5 推送规定

代码标准也是 DevOps 转型十分关注的内容,以往粗放式的代码提交形式容易导致代码提交记录极度凌乱、不可辨认,比方大量 1111test1 之类的提交记录,不仅让协同人员无奈接手、难以了解,甚至提交人本人也无奈基于这些记录进行拉取或者回滚操作。

极狐 GitLab 专业版提供的推送规定性能 能够很好的解决这个问题,它能够实现:

  • 验证提交人是否是极狐 GitLab 用户;
  • 自定义正则表达式,验证代码提交记录是否合乎肯定的标准;
  • 自定义正则表达式,验证分支名称是否合乎肯定的标准;
  • 自定义正则表达式,验证提交文件中是否有不符合规范的文件,比方 .zip、.tar 文件;
  • 验证提交的文件是否超过肯定的大小。

推送规定验证不通过,则代码无奈被推送到极狐 GitLab 代码库中,从而确保研发人员严格依照标准进行代码提交。

标准代码提交信息可配合 Commitizen 工具,它能够依照一些行业内通用的提交标准疏导开发人员填写提交信息;也能够配合 .gitignore 文件过滤一些不须要上传的文件或文件类型。它们都是在客户端施展查看作用,自身不具备束缚性质,开发人员可用可不必,而 推送规定是在服务端进行验证,确保最终合规。

所以能够说 Commitizen、.gitignore 是源头查看,推送规定是止境把关。两者可配合,但前者不可代替后者。

3.6 代码评审

因为嵌入式开发的周期绝对较长,交付频率绝对较慢,交付物多是固件,不具备互联网纯软件、高速迭代、灵便降级的个性,所以解决问题的老本也比拟高,这也使得近些年从事嵌入式开发的企业对软件品质的要求逐步进步,而 进步软件品质最罕用的形式就是进行代码评审。

极狐 GitLab 专业版提供了欠缺的代码评审机制,其中次要包含:

  • 反对强制代码评审,评审不通过不容许合并代码;
  • 反对自定义代码评审规定,针对不同分支设置不同评审人,以及最小核准人数;
  • 反对多重审批规定;
  • 反对当单元测试覆盖率升高时触发代码评审;
  • 反对阻止代码提交人、合并申请发起人进行评审;
  • 反对设置 Code Ower(代码负责人)为审批人。

其中 Code Owner 能够为代码库的不同目录、不同文件、不同文件后缀设置代码评审人,比方:

这就实现了对 Git 代码库的目录、文件进行写入管制,也解答了上文中遗留的问题。

3.7 数据保护

上文也提到了数据保护,代码防透露的相干问题,具体落实到零碎层面,极狐 GitLab 能够从事前、事中、预先三个方面提供撑持。其中最重要的是对极狐 GitLab 的操作行为进行记录和剖析,实现审计性能。

极狐 GitLab 专业版反对对创立仓库、批改明码、权限变更等零碎事件进行审计,也反对对代码推拉事件进行审计,并能够事件流的形式传递给第三方日志零碎,以便对数据进行剖析和展现,也能够制订一些规定并触发告警或告诉。

此外,在与第三方 DLP 工具对接的过程中,咱们发现有些客户的 DLP 工具只能对 Git 客户端或 IDE 进行加密,而 GitLab 自身还能够通过在网页上间接打包下载的形式获取源码,这给客户的数据保护工作造成一些麻烦。所以极狐 GitLab 为这个本土化需要减少了一项性能,能够在网页上禁用源代码下载,以便更好的解决数据保护问题。

3.8 其余相干

除了以上在源代码治理方面的劣势外,极狐 GitLab 还提供了一些其余的附加性能,比方:

  • 在工具方面,极狐 GitLab 提供了 IDE 插件 ,能够更不便对极狐 GitLab 中的我的项目、代码、流水线进行治理; 提供了 WebIDE,能够在线对代码进行查看、比照、编辑操作。
  • 在项目管理方面,极狐 GitLab 本身提供轻量的偏麻利的项目管理性能,且能够和支流的项目管理工具如 Jira、禅道、PingCode 以及和传统制作行业罕用的 PLM 零碎 Windchill 进行集成和买通,实现在需要管理系统中查看该需要工作关联了哪些极狐 GitLab 的代码提交和合并申请,实现我的项目到开发的流程关联与追溯。
  • 流水线是 DevOps 中的重要组成部分,也是研发效率晋升的基本,极狐 GitLab 提供了开箱即用的 CI/CD 性能 ,相较于 Jenkins, 极狐 GitLab CI 依附其一体化、轻量化、申明式、开箱即用的个性,在开发者群体中的使用率越来越高,在国内企业中仅次于 Jenkins 排在第二位。极狐 GitLab 也为从事嵌入式开发的企业做完源代码对立治理后,进行更进一步的 DevOps 转型提供撑持和帮忙。

最初,随着物联网、人工智能等技术的一直倒退,嵌入式零碎的利用场景将会更加宽泛,这将会催生更多的 DevOps 利用场景,也会进一步推动 DevOps 在嵌入式开发场景中的落地,期待那一天早点来到。

参考:

  1. 对于版本控制 | git-scm.com
  2. 对于 Git 与 SVN | techug.com
  3. Git 与 SVN 比照 | 腾讯云开发者社区
  4. GitHub 将于明年进行反对 Subversion(SVN)| IT 之家
  5. Introduction | Conan Tutorial
  6. Git submodule | Atlassian
  7. Git Subtree|Atlassian
  8. git-repo | Git at Google
  9. alibaba/git-repo-go | GitHub
  10. 极狐 GitLab 文档核心
退出移动版