Git服务器搭建方案

1. 方案需求背景

考虑当前移动端开发需要,需要搭建git服务器用于代码仓库管理。

2. Git VS Svn,为什么要选择GIT。

Git:分布式的版本控制系统。独立的代码更新和同步操作,不依赖于其它节点就进行离线提交和离线查看历史记录。提供了一套完善的分支/合并系统,速度快,不依赖网络。

SVN:一套集中式管理系统,依赖于一个中心服务器;一旦中心服务器异常,将无法完成代码的更新和同步,影响团队开发。

SVN GIT
版本管理方式 集中式 分布式
数据存储方式 元数据存储 文件存储
分支管理 版本库中的新目录 同一工作目录下多分支切换
提交方式 只能提交中央版本库 本地提交,服务器代码同步

结论 : 相比于集中化的版本控制系统的SVN,使用git具有以下优势:

  • 对程序源代码进行差异化的版本管理和代码的分支管理。
  • 实现本地代码库与服务器同步,可减少代码提交冲突。
  • 代码库占用的空间少。

3. 内网服务器/云服务器选择

git服务器实现方式可分别通过内网和云服务器实现,

内网服务器 云服务器
实现方式 自购服务器,独立实现 即时租用
安全性 本地代码管理,安全性高 存在一定代码泄漏风险
灵活性 公司内部访问,外网需通过VPN账号访问 随时随地访问
访问效率 内网代码提交效率高,受内网带宽限制,提交快 提交受外网限制
实现成本 只需硬件成本,成本低 需考虑租用成本,成本较高

4. git服务器常用实现方案

  • 云代码仓库 – OsChina/GitHub私有仓库
OsChina GitHub私有仓库
服务器 国内 国外
是否收费 是 $7/month
访问速度 速度较快 速度受限
  • 本地代码仓库 – GitLab

GitLab是一个用于实现一个自托管的Git项目仓库的开源应用程序,可通过Web界面进行访问公开的或者私人项目。

它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

服务器实现具体需求:

  • Ubuntu/Debian
  • ruby 1.9.3+
  • mysql or postgresql
  • git
  • gitlab-shell
  • redis
  • Sidekiq

服务器硬件配置需求

  1. 操作系统;centOS/Ubuntu/windows7
  2. 硬盘容量;无具体限制,可按需配置。
  3. CPU;官方推荐最低标准 双核心。
  4. 内存大小;官方推荐最低标准为4g。

5. 本地服务器配置

  • 如何创建本地服务器?在已有服务器上,新建虚拟机进行系统安装。
  • 操作系统选择?当前有Ubuntu/windows7中成功安装过gitlab的经验,可选Ubuntu/windows。
  • 硬盘容量选择依据?当前服务器最大可用容量300G左右,jenkins对硬盘无特殊需求,考虑后期代码扩展,只考虑代码和文档仓库管理,250G+可满足。
  • 是否重新配置服务器?基于代码仓库管理的使用,剩余容量可满足,无需新配置服务器。
  • gitLab配置完成后,与已经存在的是否冲突?全新配置gitlab后,与服务器上的已存在服务并不产生冲突。

6. 多端下服务器共用和CI集成

  • Android/IOS/H5三端通用GIT服务器,使用方式上无区别。
  • 移动端实现Jenkins可持续集成,通过文档进行安装,以配置文件为主,iOS与Android相同。
  • Jenkins的实现对硬盘容量无特别要求,暂时无需扩容,但编译速度上对CPU有一定要求。

根据文档完成Jenkins配置过程中,有可能出现的问题:

  1. 安装版本。建议使用稳定版。
  2. 安装方式的不同,在配置时有一定差异,需保证环境变量在当前用户下。
  3. 打包签名。脚本构建使用xctool,编译必须保证签名的正确性。
  4. RVM和FastLane。Jenkins环境下,RVM没有激活,无法完成打包。

7. 结论

  1. 在考虑git的优势和本地服务器的价格和使用上之后。建议在本地实现gitlab代码仓库管理。
  2. 本地服务器硬件配置需求当前可满足。并且不会对服务器已有功能产生影响。
  3. gitlab服务器配置完成当前预估4天。