GitLab之搭建(Building GitLab)

GitLab之搭建

" 在企业开发过程中,GitLab凭借其强大的版本管理、CI/CD集成和项目管理功能,成为许多团队的首选工具。本文将探讨GitLab的基础介绍、搭建过程、权限管理、代码审查以及团队知识管理等方面。通过详细的步骤和实用的技巧,旨在帮助读者更好地利用GitLab提升工作效率。"

01

GitLab简介

GitLab是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。很多公司都是基于 GitLab 进行版本管理的。

GitLab是一种基于Web的Git仓库管理工具,提供版本控制和协作开发的功能。它集成了源代码管理(SCM)、持续集成和持续交付(CI/CD)、项目管理等功能,旨在支持整个软件开发生命周期。

GitLab的主要特点:

  1. 提供Git仓库的托管,支持多用户协作,便于代码版本控制。

  2. 持续集成/持续交付(CI/CD): 内置CI/CD功能,可以自动化构建、测试和部署流程,提高开发效率。

  3. 提供问题跟踪、看板、里程碑、标签等功能,帮助团队管理项目进度和任务。

  4. 代码审查: 支持合并请求(Merge Request)和代码审查,促进团队间的协作与代码质量保证。

  5. 安全: 提供权限管理和审计日志,确保代码的安全性和合规性。

GitLab适用于各种规模的团队,从小型开源项目到大型企业级应用开发。它的全面功能使其成为DevOps实践的重要工具。

02

搭建 GitLab

搭建步骤:

安装一些依赖软件。

复制代码
   sudo apt-get update
   sudo apt-get install -y curl openssh-server ca-certificates
   sudo apt-get install -y postfix  
   # postfix发送邮件,其它的邮件配置见:https://docs.gitlab.com/omnibus/settings/smtp.html

postfix发送邮件,其它的邮件配置见:https://docs.gitlab.com/omnibus/settings/smtp.html
2.

添加下载源:

复制代码
    vim /etc/apt/sources.list.d/gitlab_gitlab-ee.list 
    # 打开该文件添加:
    # deb https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu xenial main

安装GitLab:

复制代码
    sudo apt-get update
    sudo apt-get install gitlab-ce

配置GitLab:

复制代码
   vim /etc/gitlab/gitlab.rb
   # 把external_url修改成访问的IP,更复杂的配置信息可以参考
   # https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
   external_url 'http://192.168.2.129' 
   # 开始配置
   gitlab-ctl reconfigure

在这个过程中,可能会遇到类似下面这个问题,是因为external_url配置的url不正确。

更多的配置可以参考https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlabreconfigure成功会出现以下内容:
5.

重启查看状态:

复制代码
   gitlab-ctl restart/start/status/stop     # 通过gitlab-ctl help都能查看到该信息

比如gitlab-ctl status,会显示以下信息:

启动gitlab后,访问http://192.168.2.129可能出现502错误:

此时可以使用gitlab-ctl tail来查看gitlab的服务日志,通过日志可以看到8080端口被别的进程占用了:
此时需要修改gitlab的配置信息,如下:

复制代码
vim /var/opt/gitlab/gitlab-rails/etc/unicorn.rb  
# 然后把listen的8080端口改成8088,然后重启gitlab

listen8080端口改成8088,然后重启gitlab

复制代码
gitlab-ctl restart

如果不出什么意外,再次打开http://192.168.2.129会出现下面这个页面,这个时候需要配置root账户
的密码了:

配置账户密码成功后:

03

GitLab 的权限管理

3.1、用户注册

如果我们不是gitlab的用户,可以通过两种方式成为gitlab的用户:

  1. 通过这个页面去注册http://192.168.2.129/users/sign_in:

  2. 让gitlab的管理员去添加,如下图所示点击后进入管理页面,点击"New user"去添加一个用户:

3.2、创建用户组

创建用户组:

之后出现下图所示的界面:

在这个界面上,有几个点需要明白:

  • Visibility level:可见性,三种级别:

    • Private :这个用户组下的所有工程对该用户组可见。

    • Internal :用户组下和Internal工程对所有的用户可见。

  • Public :用户组和public的工程对所有人可见。

  • Allowd to create projects:是否允许创建工程对于用户权限引入了角色进行管理,比如guesterDevelopersMaintainers等等。

  • Two-factor authentication :类似github2F验证,就是在使用gitlab的时候必须通过2F进行验证。

3.3、为用户组添加用户

点击groups,然后点击用户组,就可以向该用户组添加用户了:

然后

3.4、为工程添加访问权限

选中工程,在左侧边栏会有一个setting选项,点击该选项的members选项:

04

GitLab的code review

  1. 分支合并的时候进行代码review

  2. 对线上现有代码进行review

不是所有人都可以去直接往Masterdevelop等分支去交接代码,而必须从featurehotfix或者bug分支去merge request,经过有merge request权限的人review代码通过后,才能merge到被保护的分支。设置分支权限如下所示:

每个开发人员解决了 PR 或者开发完了feature之后,需要提交一个merge requestmaster分支。

选择源分支和目标分支,然后点击"compare branches and continue"。

按照要求填写好,选择assignee给谁去merge,然后点击"submit merge request"。

可以针对这个merge request去给出一些评论,甚至可以在commit代码上提交评论,然后如果没有什么问题就可以点击"merge" 按钮。

05

团队知识管理

为什么需要知识管理?因为程序员最痛恨的四件事:写注释,写文档,别人不写注释,别人不写文档。

产品需求、架构设计、接口等等文档:

核心流程和架构设计要有文档:

GitLab 需要团队知识管理的原因:

  1. 信息共享:团队成员可以方便地访问项目相关的文档、代码、最佳实践等知识,有助于提高团队的协作效率。

  2. 新成员 onboarding:良好的知识管理可以帮助新成员快速熟悉项目和团队工作流程,减少学习曲线,加速融入团队。

  3. 防止知识流失:随着人员变动,可能会导致关键知识的流失。系统化的知识管理可以保留重要的信息和经验,让团队在人员更替时依然高效运作。

  4. 提高生产力:通过文档化和流程标准化,团队成员可以减少重复的工作和问题,提高整体的生产力。

  5. 支持决策:系统化的知识管理能够为团队提供必要的信息支持,帮助做出更明智的决策。

  6. 促进创新:知识管理可以通过分享新想法和实践,激发创新思维,促进团队的持续改进。

06

总结

在企业中,GitLab因其强大的功能和灵活的管理而受到广泛青睐。它不仅是一个版本控制和协作开发的工具,更是支持整个软件开发生命周期的综合平台。通过搭建GitLab,团队能够实现高效的源代码管理、自动化的持续集成与持续交付,以及有效的项目管理与权限控制。

GitLab提供的代码审查机制与知识管理能力,使得团队能够在保证代码质量的同时,有效共享和传承项目知识。这种知识管理不仅能帮助新成员快速上手,而且能避免因人员变动而造成的知识流失,提升整体团队的生产力。

通过采用GitLab的功能,企业能够更好地适应快速变化的市场环境,促进团队协作和创新,建立起良好的团队文化,从而实现更高效的软件开发过程。在今后的工作中,GitLab将继续发挥其重要的作用,助力企业的数字化转型与技术进步。

相关推荐
woshilys2 小时前
mysql 删除表等待
数据库·mysql
邪恶的贝利亚2 小时前
FFMEPG常见命令查询
linux·运维·网络·ffmpeg
搜搜秀2 小时前
find指令中使用正则表达式
linux·运维·服务器·正则表达式·bash
limnade2 小时前
MySQL中动态生成SQL语句去掉所有字段的空格
sql·mysql
老李不敲代码3 小时前
榕壹云外卖跑腿系统:基于Spring Boot+MySQL+UniApp的智慧生活服务平台
spring boot·mysql·微信小程序·uni-app·软件需求
弧襪3 小时前
Ubuntu vs CentOS:Shell 环境加载机制差异分析
linux·ubuntu·centos
文or野3 小时前
MySQL 在 CentOS 7 环境安装完整步骤
数据库·mysql·adb
行思理4 小时前
centos crontab 设置定时任务访问链接
linux·运维·centos
阳光明媚大男孩4 小时前
24.0.2 双系统ubuntu 安装显卡驱动黑屏,系统启动界面键盘失灵
linux·ubuntu·计算机外设
云攀登者-望正茂4 小时前
使用 Datadog 和 Slack Alerts 监控 AWS EC2
云计算·aws·datadog