因為工作關係,最近開始在接觸 GitLab,雖然過去對於 Azure DevOps, Team City, 與 GitHub 已經有比較深入的研究,雖然在 Git Repository/Continuous Integration/Continuous Delivery 觀念上應該部會相差太遠,但對於不同服務平台與操作介面要熟悉仍要花一點時間,因此開始此一系列文章,除了讓自己熟悉 GitLab 平台,也提供有興趣的朋友參考。本系列文章若有錯誤或建議,請各位先進不吝提出,謝謝。


GitLab 基礎教學系列 (暫列文章標題,會依據撰寫當時情況異動)

  1. GitLab 基礎介紹 - 註冊、價格與操作介面說明
  2. GitLab Project 介紹 - 建立、匯入與複製你的專案
  3. GitLab Group 介紹
  4. GitLab Issue 介紹
  5. GitLab 團隊協作
  6. GitLab Continuous Integration and Continuous Delivery
  7. GitLab Runner
  8. GitLab Wiki




價格

GitLab 在對於初次使用者來說並不算有優勢,在免費層部分有容量使用與傳輸限制,每個月只有提供 400 分鐘免費計算時間。對於過去 Azure DevOps 並沒有容量與傳輸限制、每個月有 1800 分鐘,且多數功能皆可以在不用付費情況下可以使用 (如 MR Approve,在 Azure DevOps 是不須付費使用)。最後 5 人部分則是與 Azure DevOps 相同的。






註冊與操作介面

GitLab 註冊畫面相當清爽,且提供 Gmail 與 GitHub 帳號直接註冊使用。另帶一題有提供30 天每費試用。




 GitLab 與 GitHub 平台服務都是以 Git Repository (儲存庫為中心) 為主延伸服務:從專案列表上可以清楚看到有多少 Star, Merge, Brach;當你進入專案時,可以看到完整的儲存庫狀態;以專案管理層面,有簡單的 Issue Tracking 與 Kanban,雖然不如 Azure DevOps 專案管理來的精緻,但個人覺得目前在團隊使用上,比 GitHub 好一些。

比較有趣的是,Azure DevOps 與 GitHub 合併分支請求稱為 Pull Request,GitLab 稱為 Merge Request,






Issue 部分較為簡單,看起來比較不容易用於執行 Scrum 或 Agile 管理流程。與 issue 相關連結是採用 closing pattern:與 Git Commit 是採用 #xx 連結到 Issue、參考至 MR 則是 !xx、參考至 snippet 則是 $xx



雖然尚未深入研究 Pipeline,但與 GitHub Action 類似, CI/CD 會似乎在同一份 YAML 上進行維護。雖然也提供主流程式語言與編譯工具 Template,但並沒有像 GitHub 與 Azure DevOps 有大量 Task/Extension 可以使用




Runner 部分 (Azure DevOps 與 GitLab 稱為 Agent) 也提供 MacOS, Linux, 與 Windows 三種類型,但多提供 Container 與 K8S Cluster 設定。Runner 分類方式則與 GitHub/ Team City 方式相同,以 Tag 做分類。比較特別在 GitLab 上會限制 Runner 版本。





總結

在第一篇文章,除了快速過一下 GitLab 平台功能,我們也以初學者角度將 GitLab 與其他服務平台進行簡單比較。雖然比較結果並不是如此公平 (可能有其他平台使用習慣),在後面的文章我們會比較詳細的說明每一項功能的操作步驟,並做更細部的比較。