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.pswp.cn/pingmian/76329.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/76329.shtml
英文地址,請注明出處:http://en.pswp.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 >…