探索GitLab:从搭建到高效使用的实用指南

news2024/11/13 8:53:08

企业里为什么喜欢使用GitLab

  • 一、GitLab简介
  • 二、搭建GitLab
  • 三、GitLab的权限管理
    • 3.1、用户注册
    • 3.2、创建用户组
    • 3.3、为用户组添加用户
    • 3.4、为工程添加访问权限
  • 四、GitLab的code review
  • 五、团队知识管理
  • 六、总结

一、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实践的重要工具。

二、搭建GitLab

搭建步骤:

  1. 安装一些依赖软件。

    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
    
  3. 安装GitLab:

     sudo apt-get update
     sudo apt-get install gitlab-ce
    
  4. 配置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账户
的密码了:
在这里插入图片描述
配置账户密码成功后:

在这里插入图片描述

三、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选项:
在这里插入图片描述

四、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” 按钮。
在这里插入图片描述

五、团队知识管理

为什么需要知识管理?

程序员最痛恨的四件事:写注释,写文档,别人不写注释,别人不写文档。
在这里插入图片描述

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

在这里插入图片描述
核心流程和架构设计要有文档:
在这里插入图片描述
GitLab 需要团队知识管理的原因:

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

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

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

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

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

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

  7. 增强团队文化:良好的知识管理实践能够促进团队之间的沟通与合作,增强团队的凝聚力。

六、总结

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2052146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Adobe Media Encoder ME 2023-23.6.6.2 解锁版下载安装教程 (专业的视频和音频编码渲染工具)

前言 Adobe Media Encoder(简称Me)是一款专业的音视频格式转码软件,文件格式转换软件。主要用来对音频和视频文件进行编码转换,支持格式非常多,使用系统预设设置,能更好的导出与相关设备兼容的文件。 一、…

网站怎么做敏感词过滤,敏感词过滤的思路和实践

敏感词过滤是一种在网站、应用程序或平台中实现内容审查的技术,用于阻止用户发布包含不适当、非法或不符合政策的内容。我们在实际的网站运营过程中,往往需要担心某些用户发布的内容中包含敏感词汇,这些词汇往往会导致我们的网站被用户举报&a…

JVM的组成

JVM 运行在操作系统之上 java二进制字节码文件的运行环境 JVM的组成部分 java代码在编写完成后编译成字节码文件通过类加载器 来到运行数据区,主要作用是加载字节码到内存 包含 方法区/元空间 堆 程序计数器,虚拟机栈,本地方法栈等等 随后来到执行引擎,主要作用是翻译字…

系统工程与信息系统(上)

系统工程 概念 【系统工程】是一种组织管理技术。 【系统工程】是为了最好的实现系统的目的,对系统的组成要素、组织结构、信息流、控制机构进行分析研究的科学方法。 【系统工程】从整体出发、从系统观念出发,以求【整体最优】 【系统工程】利用计算机…

信息搜集--敏感文件Banner

免责声明:本文仅做分享参考... git安装: Windows10下安装Git_win10安装git好慢-CSDN博客 git目录结构: Git 仓库目录 .git 详解-CSDN博客 敏感目录泄露 1-git泄露 Git是一个开源的分布式版本控制系统,我们简单的理解为Git 是一个*内容寻址文件系统*,也就是说Gi…

二十四、解释器模式

文章目录 1 基本介绍2 案例2.1 Instruction 接口2.2 StartInstruction 类2.3 PrimitiveInstruction 类2.4 RepeatInstruction 类2.5 InstructionList 类2.6 Context 类2.7 Client 类2.8 Client 类的运行结果2.9 总结 3 各角色之间的关系3.1 角色3.1.1 AbstractExpression ( 抽象…

Nexpose漏扫

免责声明:本文仅做分享参考... nexpose官网: Nexpose On-Premise Vulnerability Scanner - Rapid7 Rapid7的Nexpose是一款非常专业的漏洞扫描软件。有community版本和enterprise版本。 其中community版是免费的,但是功能简单;enterprise版本功能强大.…

适用于 Windows 10 的最佳免费数据恢复软件是什么?

有没有适用于 Windows 10 的真正免费的数据恢复软件? 丢失重要数据,无论是由于硬件问题、软件问题、意外删除、格式化还是病毒和恶意软件,确实很麻烦。当你面临数据丢失时,你可能真心希望找到一款免费的数据恢复软件,…

【C++指南】深入剖析:C++中的引用

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 目录 引言: 一、引用的基本概念 1. 定义与特性 2. 语法与声明 二、引用的进阶用法 1. 函…

Python高手参考手册:迭代器协议详解

在Python中,迭代器协议提供了一种灵活的方式来遍历容器中的元素。本文将详细介绍迭代器协议的基础知识、其实现机制以及一些实用的应用案例。 迭代器协议概述 1.1 迭代器与迭代协议 迭代器协议定义了如何遍历容器中的元素。在Python中,任何实现了迭代…

Android:使用Gson常见问题(包含解决将Long型转化为科学计数法的问题)

一、解决将Long型转化为科学计数法的问题 1.1 场景 将一个对象转为Map类型时,调用Gson.fromJson发现,原来对象中的long类型的personId字段,被解析成了科学计数法,导致请求接口失败,报参数错误。 解决结果图 1.2、Exa…

轻松掌握域名系统(DNS):基础小白的入门指南

文章目录 域名系统概述DNS 的发展和结构DNS 的服务和功能互联网的域名结构域名服务器的类型和功能域名解析的过程DNS资源记录小结 域名系统概述 域名系统(Domain Name System,DNS) 是一种核心服务,它使得网络应用能够在应用层使用…

腾讯地图SDK Android版开发 6 显示覆盖物

腾讯地图SDK Android版开发 6 显示覆盖物 前言地图类中覆盖物的接口覆盖物类Marker示例Polyline示例Polygon示例Arc示例Circle示例移除示例效果图 Marker的更多属性常用属性交互碰撞动画其它属性 折线的更多属性常用属性交互其它属性 多边形的更多属性常用属性交互其它属性 Arc…

【手抖拜拜!特发性震颤患者的专属锻炼秘籍,轻松改善生活品质】

Hey小伙伴们~👋 今天咱们来聊聊一个可能不那么常被提及,但却实实在在影响着很多人生活质量的话题——特发性震颤。如果你或你身边的人正为此困扰,别怕,这篇笔记就是你们的“稳手宝典”📚! 🌈 了…

【论文复现】 | 改善抑郁估计从面部对齐,训练优化和调度

文章目录 1、Introduction2、Related work3、 Proposed methodology3.1. Preprocessing and face alignment3.2 Architecture3.3 Data Augmentation3.4 Training 4、Experimental analysis and results4.1 Datasets4.2 Experimental setup4.3 Protocol and Performance metrice…

JS面试题3

1、使用递归完成1~100的累加 // 1~100累加function addRes(x,y){if(x y){return x}else{return y addRes(x,y-1) // 第一次:3 addRes(1,2) > 往后依次递减,到达目标值位置后依次计算累加值}}console.log(addRes(1,3))// 斐波那契数列(兔子数列) &…

【HTML5+JavaScript+CSS3】3D空间环绕旋转特效(效果+源码+可理解的注释)

失去一个人,只是生命中的一段过程,天空不会永远都下雨,我们总会在最深的绝望里,看见最美的风景。 🎯作者主页: 追光者♂🔥 🌸个人简介: 💖[1] 计算机专业硕士研究生💖 🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿 🌟[3] 2022年度博客之星人…

案例研究|JumpServer堡垒机为金山办公信息安全保驾护航

金山办公(KINGSOFT OFFICE)是中国办公软件的领航者,其产品体系以旗舰产品WPS Office为核心,辅以金山文档、金山协作及金山词霸等产品,形成了全方位、高效能的办公生态系统,在中国乃至全球范围内拥有庞大的用…

项目问题 | CentOS 7停止维护导致yum失效的解决办法

目录 centos停止维护意味着yum相关源伴随失效。 报错: 解决方案:将图中四个文件替换掉/etc/yum.repos.d/目录下同名文件 资源提交在博客头部,博客结尾也提供文件源码内容 CentOS-Base.repo CentOS-SCLo-scl.repo CentOS-SCLo-scl-rh.rep…

云计算实训30——自动化运维(ansible)

自动化运维 ansible----自动化运维工具 特点: 部署简单,使用ssh管理 管理端与被管理端不需要启动服务 配置简单、功能强大,扩展性强 一、ansible环境搭建 准备四台机器 安装步骤 mo服务器: #下载epel [rootmo ~]# yum -y i…