序言

新的篇章即将开启。从这次的博客开始,我将陆续的更新资料,完成我的快速开发框架体系的说明文档搭建。在随后的博文中,我将讲解我理解中的,建立一个高效App敏捷开发的必要流程、管理、技术和“金字塔”框架搭建。技术汇总的积淀,希望能够给大家带来不一样的体验~

为什么先介绍“代码管理”

对于一个软件的开发,如果不是一个人完成的小项目的话,一般为了开发效率,会有至少3个人组成团队进行一个项目的开发。这时候就会面临同步开发的代码管理的问题。代码管理,从小的角度来讲,是为了减少代码冲突,提高代码可维护性,从大的角度来讲,是为了整个开发体系建立一个完善的沟通机制并为整个项目的后续开发,提供可持续的动力和根基。不论是模块的开发,还是preview代码,提出新的计划,建立开发任务。一个好的项目不仅体现项目本身代码的可读性、健壮性等因素上,还体现在框架的可维护性、稳定性等续航能力和整体的管理机制上。代码管理的目的,就是为了保证这一点而诞生的。因此,一个完善的代码管理机制,就是想做好一个项目的根基之一。常用的“代码管理”体系有:

-  svn               单一流程控制,不易实现并行开发、不可回溯
-  git               提供时间轴功能,可实现并行开发、可回溯
-  gitlab            兼容项目管理功能,属于项目托管平台

这里我们主要介绍一下,gitlab,相较于单纯的版本控制,gitlab提供对整个项目的管理功能。gitlab是一个项目托管平台。

Gitlab安装

Gitlab是一个开源的版本控制和代码托管服务器. 我们可以自行搭建.

1. 安装前准备

Gitlab官网: https://about.gitlab.com/
CentOS7官方文档: https://about.gitlab.com/downloads/#centos7
服务器配置:

  • VPS: 腾讯云服务器
  • 操作系统: CentOS7
2. 安装并配置必要依赖

在CentOS 6和7, 以下命令会同时开启HTTP和SSH访问权限

sudo yum install curl policycoreutils openssh-server openssh-clients
sudo systemctl enable sshd
sudo systemctl start sshd
sudo yum install postfix
sudo systemctl enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
3. 下载安装脚本并安装GitLab

直接从网上下载安装包,并自动安装Gitlab

curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce

直接从网上下载安装包,并手动安装Gitlab

curl -LJO https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-XXX.rpm/download
rpm -i gitlab-ce-XXX.rpm
4. 修改关键配置

打开并编辑配置文件

sudo nano /etc/gitlab/gitlab.rb

在其中进行必要的设置, 比如以下两项必须设置:

  • 修改external_url为真实IP或者域名
  • 修改unicorn配置以便可以push(相关问题)
  • 取消listen前的注释符号
  • 取消port前的注释符号, 并检查端口是否被占用, 如果被占用需要修改

配置文件保存后, 执行以下命令使配置生效, 同时会启动GitLab

sudo gitlab-ctl reconfigure
5. 登录验证安装成功

访问真实IP或者域名(80端口)
首次登录时, 页面会引导到重置密码, 这是设置默认管理员(root)的密码, 请填写新的初始密码. 完成后会进入登录页面.

Gitlab使用

gitlab版本库 gitlab for android_gitlab版本库


图中左侧红框部分便是Gitlab的主要界面了,其主要功能有:

  • Project: 项目,用于建立、管理各种开发项目
  • Activity:当前活动
  • Group:当前分组,分组是将当前开发人员,根据项目要求进行分组管理的功能
  • MileStones:里程碑,即一个项目的关键节点设定,配合Issues使用,可查看进度
  • Issues:任务列表,包括不同状态任务的列表,用于记录当前开发过程中的关键事件
  • Merge Requests:合并请求,用于项目合并和代码审核Review,提供History功能
  • Snippets:剪切板
  • Help:帮助
  • Profile Settings:自己的用户信息设置
    基本功能如上,创建各个条目下对应内容的时候,和Git图形化界面使用极为相似。所以不再赘述。

小结

至此,项目管理平台就搭建完毕,我们可以在该平台上,管理我们的后续开发项目了。然而,此时我们只是从开发上提高了效率,但是一个App并不只是编写程序,还要对程序进行测试和多部门协同才可以完成一个项目的开发。所以,怎么让不同部门的程序员间,能够在可执行程序上实现快速沟通,这就是一个问题了。这个问题的解决,可以通过CI(continuous integration 持续集成)来实现。我们下一章见~