Git仓库实现方案设计
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
服务器硬件配置需求
- 操作系统;centOS/Ubuntu/windows7
- 硬盘容量;无具体限制,可按需配置。
- CPU;官方推荐最低标准 双核心。
- 内存大小;官方推荐最低标准为4g。
5. 本地服务器配置
- 如何创建本地服务器?在已有服务器上,新建虚拟机进行系统安装。
- 操作系统选择?当前有Ubuntu/windows7中成功安装过gitlab的经验,可选Ubuntu/windows。
- 硬盘容量选择依据?当前服务器最大可用容量300G左右,jenkins对硬盘无特殊需求,考虑后期代码扩展,只考虑代码和文档仓库管理,250G+可满足。
- 是否重新配置服务器?基于代码仓库管理的使用,剩余容量可满足,无需新配置服务器。
- gitLab配置完成后,与已经存在的是否冲突?全新配置gitlab后,与服务器上的已存在服务并不产生冲突。
6. 多端下服务器共用和CI集成
- Android/IOS/H5三端通用GIT服务器,使用方式上无区别。
- 移动端实现Jenkins可持续集成,通过文档进行安装,以配置文件为主,iOS与Android相同。
- Jenkins的实现对硬盘容量无特别要求,暂时无需扩容,但编译速度上对CPU有一定要求。
根据文档完成Jenkins配置过程中,有可能出现的问题:
- 安装版本。建议使用稳定版。
- 安装方式的不同,在配置时有一定差异,需保证环境变量在当前用户下。
- 打包签名。脚本构建使用xctool,编译必须保证签名的正确性。
- RVM和FastLane。Jenkins环境下,RVM没有激活,无法完成打包。
7. 结论
- 在考虑git的优势和本地服务器的价格和使用上之后。建议在本地实现gitlab代码仓库管理。
- 本地服务器硬件配置需求当前可满足。并且不会对服务器已有功能产生影响。
- gitlab服务器配置完成当前预估4天。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Qin Blog!