【IT168 评测】GitLab功能丰富,核心功能也很强大,尽管存在一些性能问题,但它仍然不失为一个引人注目的平台。Gitlab是一个用Ruby on Rails开发的开源项目管理程序,可以通过WEB界面访问公开或私人项目。它和Github有类似的功能,能够浏览源代码,缺陷管理和注释。
如果你愿意花时间评估软件版本控制系统,你无疑会看到这两个提供本地安装和SaaS选项的GitHub Enterprise和Bitbucket Server的大名。如果是这样,你可能会有兴趣尝试运行GitLab,一个由同名公司支持的开源项目。GitLab提供免费社区版,付费企业版和托管版,以及包含企业功能的免费SaaS产品。虽然不是一个家喻户晓的名字,但GitLab绝对是一个令人信服的竞争对手。
运行在内置的Git服务器之上,GitLab提供了一个用于管理用户,项目和代码的全功能UI,甚至包括一个内置的连续集成解决方案。GitLab许多周到的可用性功能,为忙碌的开发人员带来了生活的曙光。尽管大型安装和配置上存在一些速度或性能问题,但GitLab仍然是内部代码管理的坚实选择。
用户管理
随着公司的发展,管理用户可能会成为一个噩梦。 GitLab有一些不错的功能,可以简化用户管理。对于身份验证,用户也可以获得大量选项。除了为每个用户创建新的用户名和密码之外,用户还可以搭载外部OAuth提供商(如GitHub和Twitter)来进行身份验证和帐户创建。一旦用户在系统中存在,就可以将他们分配到组或授予他们创建组的权限。对用户所属的每个组,可以具有五种不同的角色,从只读到完全管理访问。一个好处是对组成员资格可以设置自动过期,这使得它很容易处理临时承包商或暑期实习生团组。换言之,GitLab允许用户轻松配置组权限和处理成员资格过期。
GitLab还支持很多面向企业的身份验证选项,包括LDAP,SAML和Kerberos集成。此外,企业版支持多个同步的LDAP提供程序,并且能够配置GitLab组成员资格以与LDAP组同步。
其他优秀的用户管理功能包括可选或必需的双重身份验证,以及将用户模拟为管理员并强制对每个用户施加项目限制。当涉及到登录页面时,GitLab社区版提供的自定义方式很少,而企业版至少允许配置徽标。
问题和项目管理
GitLab包含一个轻量级的问题系统,以帮助跟踪需要完成的工作。创建问题时,可以轻松地将其分配给用户,指定到期日或添加用户可配置标签。在企业版,还可设置权重,这是一种表明解决问题所需的相对难度或工作量的方法,也很容易将问题添加到用户定义的问题组,同时可选到期日。问题组通常用于将问题分到产品准备阶段或产品发布阶段,是比较灵活的。
问题组提供一个很好的分类,已经完成了多少工作,剩下多少工作,谁在做什么一清二楚。有时需要一个更通用的视图,以便查看开发周期中特定问题的位置。这时,模板就可能进来,模板是可配置的,问题列表代表产品管道中的不同阶段。
例如,你可能拥有代表产品积压的列表,你就会看到可以处理的问题,正在进行的问题,准备通过质量检查进行测试的问题和已完成的问题。然后,你可以轻松地将问题从列表移动到下一个工作进度。GitLab中的模板由标签驱动,这意味着你可以创建任何种类的线性流。在模板上配置所需的列表并将问题拖到其所属的列表后,你可以对指定的用户或问题组进行过滤,以更好地了解问题所在的子集。
一旦问题解决了,这部分工作完成以后,开发人员就准备将该工作合并到主分支中,他们将创建一个合并请求,就像GitHub中的pull请求一样。与问题类似,可以为合并请求分配用户和到期日。在那里,几个事件往往会并行发生。受理人将收到请求合并的通知,指示他们应审查这件事。
合并请求支持逐行注释和对话,允许共享和讨论反馈。GitLab内置到合并请求中的杀手锏功能是跟踪未解决问题的能力。这使得问题容易合并反馈,即使合并请求需要经过几轮审查,也不会丢失剩余工作跟踪进度。
跟踪未解决问题的能力是GitLab漂亮的附加功能之一。 对于跳到下一个未解决的问题,其提供了合并请求反馈的简化方法。
与这些并行,你通常还会对建议的更改进行持续集成(CI),持续集成是一种软件开发实践,即团队开发成员经常集成它们的工作,每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误,以确保在合并后不会破坏任何内容。 GitLab有自己的CI服务,并在Community Edition中提供与Atlassian的Bamboo CI集成,但只有企业版与Jenkins集成。
有时,CI构建需要很长时间才能运行,尤其是当用户执行端到端测试套件时。因此,GitLab包括一个小的但有影响力的功能,如果构建成功,审阅者可以自动合并请求,这可能不是一个大事,但谁都知道其中的痛苦,重要功能检查或错误修复的构建进度是很关键的。
为了跟踪每个用户必须做的所有工作,GitLab提供了一个由任务和提示驱动的全局待办事项列表。GitLab不是简单地发通知,而是假定任何分配或提及都是请求操作,为用户提供可操作项目的列表。登录GitLab后,只需点击铃铛图标就可查看所有待办事项。用户可以一次浏览所有项目,或者过滤特定项目,类型或操作。
例如,如果一个人既是项目经理又是开发人员,需要执行双重任务,就可以通过过滤其分配承受的所有合并请求。在合并或添加逐行注释后,可以将这些待办事项标记为已完成,然后根据提及的内容过滤,查看是否有人在问题或合并请求中有提及自己的地方。回应这些意见或请求后,用户可以过滤分配到的问题,最后编写一些代码。
除了代码操作,任务规划和项目管理功能之外,GitLab还包含了两个位于代码下游的功能:上文提到的GitLab CI和GitLab Pages。
GitLab CI是GitLab社区版和企业版提供的一组持续集成功能。GitLab CI构建在项目存储库中定义为YAML文件,它们可根据需要运行或响应打开、合并请求等事件。当构建被触发,工作将在GitLab运行器上执行,这需要用户设置额外的基础设施。
运行器执行使用特定执行策略定义的构建步骤。这像在运行器上的shell中执行构建一样。或者,可以在Docker容器中运行,但要确保每个构建步骤都有一个干净,可重复的环境。如果想进一步提高灵活性和服务密度,可以把构建放到Kubernetes集群中。构建完成后,可以下载构建或触发其他构建。将几个构建连接在一起以创建管道,并且以你自己的方式进行持续交付和持续部署。
GitLab Pages是一个企业版功能,其中GitLab实例以直接从存储库生成的网站形式托管静态内容。它类似于GitHub Pages和Bitbucket Pages,但是GitLab在其灵活性上脱颖而出。存储库可以简单地由静态资产组成,或者可以由任意数量的静态站点生成器驱动(而其竞争对手通常只提供单个选项)。
项目设置和托管后,用户可以通过配置自定义DNS条目和TLS进一步确保安全访问。GitLab页面的一个缺点是,它取决于GitLab CI的构建,所以必须设置运行者,使其正常工作。
安装和维护
在私有或公有云中启动GitLab实例是一个相对无痛的过程。基本的综合安装,在一个单一的盒子上运行所有服务,可以通过APT或Debian仓库在Linux机器上完成。只需要几个命令,用户就可以拥有Chef配置框。它比GitLab在其网站上声称的两分钟要多,但不需要太久。只需十分钟,在AWS上使用Wi-Fi从一个GitLab实例开始运行,其中大部分时间都在等待AWS控制台加载,所以可配置一个新的框并分配权限安全组,进一步的配置也很简单。换掉电子邮件提供商变得很轻松,使用SSL证书配置Web应用程序,并确保HTTP流量重定向到HTTPS。
实例将启动并运行,但却没有用户,组或存储库。如果使用LDAP,则可以导入用户和组,也可以以管理员身份创建用户帐户,或者让每个人创建自己的帐户。一大群新的GitLab用户已经在某个地方有代码托管了。为了方便过渡,GitLab有一个导入功能,可以从GitHub,Bitbucket,Google代码等许多代码和元数据中导入。
当从GitHub导入时,我很高兴地发现,除了代码和完整的提交历史,GitLab可以复制问题,拉取请求。除了一次性存储库导入,GitLab在企业版中提供了完整的存储库镜像。 镜像只是一种方式,从上游存储库到GitLab,这意味着这个功能不会让你利用任何涉及更改代码的GitLab功能。 但是,如果有托管在某处的一个Git实例,可以使用存储库镜像来查看代码,管理问题,并启动持续集成构建。
根据可用性或扩展需求,用户需要修改GitLab安装。这可能能避免单一服务器Omnibus软件包的定期备份,虽不具备高可用性或可扩展性,但至少将确保用户可以获得所有的数据,如果服务器被囤积的话。对于更严格的HA和扩展要求,用户可能希望采用主/从方法,在主/从方法中,如果活动服务器关闭,第二服务器可以随时接管。如果需要一个完全可靠的解决方案,可以分离应用程序依赖关系,配置高可用性,并设置运行GitLab Rails服务器的多个活动实例。强大的解决方案是以复杂性和时间为代价的,因此请确保在使用之前评估HA /扩展需求。
在过去,GitLab就有一些性能问题,特别是当它涉及繁忙系统上的合并请求时。该公司在今年年初修复了一些性能问题,但为了监控一切可能的状况,我建议打开安装附带的InfluxDB指标和Grafana仪表板(默认情况下是未启用的),InfluxDB和Grafana很容易设置。你不必从头开始绘制一组图表,但导入它们是一件苦差事。首先克隆默认仪表板的GitLab存储库,然后通过Grafana UI单独导入每个存储库,它有良好的记录,并且很直接,但这个工作还是很乏味。
GitLab许可
GitLab社区版是免费的。如果想要访问扩展功能集,可以购买GitLab企业版的许可证,人均每年39美元。GitLab是一个开源产品,它有两个最大的竞争对手,GitHub和Bitbucket。 GitLab每月22号发布新版本,所以你会看到它不断的成长和改进。
GitLab提供了一个完整的内部Git托管解决方案,具有坚实的核心功能基础,可以抵抗其强大的竞争对手。与开源模式和快速开发周期相结合,足以激发开发者的兴趣。由于坚实的基础和令人愉快的附加功能,这个开源VCS必会是一个严肃的竞争者。