代码版本管理 GitLab介绍
一、前言
GitLab是利用 Ruby on Rails 一個開源的版本管理系統,實現一個自托管的 Git 項目倉庫,可通過 Web 界面進行訪問公開的或者私人項目。
它擁有與 Github 類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。可以管理團隊對倉庫的訪問,它非常易于瀏覽提交過的版本并提供一個文件歷史庫。
團隊成員可以利用內置的簡單聊天程序(Wall)進行交流。
它還提供一個代碼片段收集功能可以輕松實現代碼復用,便于日后有需要的時候進行查找。
1、Git的家族成員
- Git:是一種版本控制系統,是一個命令,是一種工具。
- Gitlib:是用于實現Git功能的開發庫。
- Github:是一個基于Git實現的在線代碼托管倉庫,包含一個網站界面,向互聯網開放。
- GitLab:是一個基于Git實現的在線代碼倉庫托管軟件,你可以用gitlab自己搭建一個類似于Github一樣的系統,一般用于在企業、學校等內部網絡搭建git私服。
2、Gitlab的服務構成
- Nginx:靜態web服務器。
- gitlab-shell:用于處理Git命令和修改authorized keys列表。
- gitlab-workhorse:輕量級的反向代理服務器。
- logrotate:日志文件管理工具。
- postgresql:數據庫。
- redis:緩存數據庫。
- sidekiq:用于在后臺執行隊列任務(異步執行)。
- unicorn:An HTTP server for Rack applications,GitLab Rails應用是托管在這個服務器上面的。
版本管理 GitLab 的安裝及管理 (CentOS 7)
3、GitLab工作流程
版本管理 GitLab 的安裝及管理 (CentOS 7)
4、GitLab Shell
GitLab Shell有兩個作用:為GitLab處理Git命令、修改authorized keys列表。
當通過SSH訪問GitLab Server時,GitLab Shell會限制執行預定義好的Git命令(git push, git pull, git annex),調用GitLab Rails API 檢查權限,執行pre-receive鉤子(在GitLab企業版中叫做Git鉤子),執行你請求的動作 處理GitLab的post-receive動作,處理自定義的post-receive動作。
當通過http(s)訪問GitLab Server時,工作流程取決于你是從Git倉庫拉取(pull)代碼還是向git倉庫推送(push)代碼。如果你是從Git倉庫拉取(pull)代碼,GitLab Rails應用會全權負責處理用戶鑒權和執行Git命令的工作;如果你是向Git倉庫推送(push)代碼,GitLab Rails應用既不會進行用戶鑒權也不會執行Git命令,它會把以下工作交由GitLab Shell進行處理:
調用GitLab Rails API
檢查權限執行pre-receive鉤子(在GitLab企業版中叫做Git鉤子)
執行你請求的動作
處理GitLab的post-receive動作
處理自定義的post-receive動作
5、GitLab Workhorse
GitLab Workhorse是一個敏捷的反向代理。它會處理一些大的HTTP請求,比如文件上傳、文件下載、Git push/pull和Git包下載。其它請求會反向代理到GitLab Rails應用,即反向代理給后端的unicorn。
總結
以上是生活随笔為你收集整理的代码版本管理 GitLab介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 企业实战_03_MyCat下载、安装、启
- 下一篇: 用Jenkins自动化搭建测试环境_je