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 

搭建步骤:

  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 updatesudo 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账户
的密码了:

配置账户密码成功后:

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将继续发挥其重要的作用,助力企业的数字化转型与技术进步。

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

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

相关文章

蓝桥杯 小蓝的操作(一维差分)

问题描述 一个数组 aa 中共包含 nn 个数,问最少多少次操作,可以让 aa 数组所有数都变成 11 。 操作的内容是:每次操作可以任选一个区间使得区间内的所有数字减 11 。 数据保证一定有解。 输入格式 第一行一个整数 nn 表示有 nn 个整数。 …

C# net CMS相关开源软件 技术选型 可行性分析

C# net CMS相关开源软件 技术选型 可行性分析 OrchardCMS(微软主导) https://github.com/OrchardCMS/OrchardCore https://docs.orchardcore.net/en/latest/ BSD Umbraco-CMS(丹麦) https://github.com/umbraco/Umbraco-CMS https://docs.umbraco.com/…

程序化广告行业(77/89):融资、并购与上市全景洞察

程序化广告行业(77/89):融资、并购与上市全景洞察 大家好呀!一直以来,我都希望能和大家一起在技术知识的海洋里畅游、学习进步。前面我们已经了解了程序化广告行业的发展态势、PC端和移动端投放差异以及行业融资的大致…

【解决方法】VMware 此平台不支持虚拟化Intel VT-x/EPT

目录 1. 引言2. 问题描述3. 解决方法3.1 方法一(临时)3.2 方法二(此方法非常离谱,永久有效) 4. 🤑鼓励一下5. 求关注6. 我的其他文章推荐 1. 引言 收集同学们遇到的各种VMware安装、使用过程中遇到的问题&a…

项目学习总结001

1. 策略模式和工厂模式 https://mp.weixin.qq.com/s/RG-h7r69JyKUlBZylJJIFQ 在软件开发中也常常遇到类似的情况,实现某一个功能有多个途径,此时可以使用一种设计模式来使得系统可以灵活地选择解决途径,也能够方便地增加新的解决途径。这就是…

OpenHarmony 5.0版本视频硬件编解码适配

一、简介 Codec HDI(Hardware Device Interface)对上层媒体服务提供视频编解码的驱动能力接口,主要功能有获取组件编解码能力,创建、销毁编解码器对象,启停编解码器操作,编解码处理等。 Codec HDI 2.0接口…

深度解析基于 Web Search MCP的Deep Research 实现逻辑

写在前面 大型语言模型(LLM)已成为我们获取信息、生成内容的重要工具。但它们的知识大多截止于训练数据的时间点,对于需要实时信息、跨领域知识整合、多角度观点比较的深度研究 (Deep Research) 任务,它们往往力有不逮。如何让 LLM 突破自身知识的局限,像人类研究员一样,…

鸿蒙案例---生肖抽卡

案例源码: Zodiac_cards: 鸿蒙生肖抽奖卡片 效果演示 初始布局 1. Badge 角标组件 此处为语雀内容卡片,点击链接查看:https://www.yuque.com/kevin-nzthp/lvl039/rccg0o4pkp3v6nua 2. Grid 布局 // 定义接口 interface ImageCount {url:…

基于RV1126开发板实现自学习图像分类方案

1. 方案简介 自学习:在识别前对物体图片进行模型学习,训练完成后通过算法分类得出图像的模型ID。 方案设计逻辑流程图,方案代码分为分为两个业务流程,主体代码负责抓取、合成图像,算法代码负责训练和检测功能。 2. 快速…

cat命令查看文件行数

在Linux和Unix-like操作系统中,cat命令主要用于查看文件内容,而不是直接用来查看文件行数。如果你想要查看一个文件的行数,可以使用以下几种方法: 方法1:使用wc命令 wc(word count)命令可以用…

git清理已经删除的远程分支

目录 命令作用 使用场景 示例流程 注意事项 常见问题 git remote update origin --prune git remote update origin --prune 是一个 Git 命令,用于 更新本地远程跟踪分支 并 清理(删除)本地已失效的远程分支引用。以下是详细分解&#…

NLP高频面试题(四十)——什么是 BitFit?

BitFit(Bias-term Fine-tuning)是一种参数高效的微调方法,专注于在预训练模型中仅调整偏置项(bias term),而将其他参数保持不变。这种方法在自然语言处理领域,尤其是在中小规模数据集上,展现出了与全量微调相媲美的性能,同时显著减少了计算资源的消耗。 什么是 BitFi…

Java-servlet(完结篇)过滤器乱码解决与监听器

Java-servlet(完结篇)过滤器乱码解决与监听器 前言一、过滤器乱码解决二、监听器1. HttpSessionListener2. ServletContextListener3. ServletRequestListener 三、监听器的使用场景Java-servlet 结语 前言 在之前的 Java Servlet 学习中,我…

为了避免unboundLocalError和为什么X的值一直不变呢?

## 1.为了避免unboundLocalError 发生unboundLocalError! def generate_integer(level):if level 1:X randint(1,9)return X这里出错的原因在于,一旦if 后面的条件没有成立,然后X根本没出生,然后你去使用它,这是有…

opencv-python基础

一.opencv-python简述 其使用Numpy,所有OpenCV数组结构都转换为Numpy数组,是一个高度优化的数据库操作库。 二.环境安装 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python 三.基本概念 - 像素是图像的基本单元,每个…

ReentrantLock 实现公平锁和非公平锁的原理!

🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢🤗! 🌟了解 ThreadLocal请看: ThreadLocal有趣讲解,小白也能听懂&#xff…

NLP高频面试题(四十一)——什么是 IA3 微调?

随着大型语言模型的广泛应用,如何高效地将这些模型适配到特定任务中,成为了研究和工程实践中的重要课题。IA3(Infused Adapter by Adding and Adjusting)微调技术,作为参数高效微调的一种新颖方法,提供了在保持模型性能的同时,显著减少可训练参数数量的解决方案。 IA3 …

swift菜鸟教程14(闭包)

一个朴实无华的目录 今日学习内容:1.Swift 闭包1.1闭包定义1.2闭包实例1.3闭包表达式1.3.1sorted 方法:据您提供的用于排序的闭包函数将已知类型数组中的值进行排序。1.3.2参数名称缩写:直接通过$0,$1,$2来顺序调用闭包的参数。1.3.3运算符函…

蓝桥杯-蓝桥幼儿园(Java-并查集)

并查集的核心思想 并查集主要由两个操作构成: Find:查找某个元素所在集合的根节点。并查集的特点是,每个元素都指向它自己的父节点,根节点的父节点指向它自己。查找过程中可以通过路径压缩来加速后续的查找操作,即将路…

ruby内置全局变量

以下是 Ruby 中常见的 内置全局变量 及其用途的详细说明。这些变量以 $ 开头,由 Ruby 解释器自动管理,用于访问系统状态、异常、输入输出等核心信息。 一、异常处理相关 全局变量说明示例$!当前作用域最后抛出的异常对象(等同于 rescue >…