GitLab: 從建立 Group 和 Project 開始
本系列文是從 iT 邦幫忙鐵人賽系列文章搬至 gitlab-book.tw,鐵人賽撰文時 GitLab 仍為 12.x 版本,因此本系列文內容已有部分過期,本次搬移至此後,會視狀況新增一些補註說明。
本系列文是從 iT 邦幫忙鐵人賽系列文章搬至 gitlab-book.tw,鐵人賽撰文時 GitLab 仍為 12.x 版本,因此本系列文內容已有部分過期,本次搬移至此後,會視狀況新增一些補註說明。 鐵人賽原文網址:https://ithelp.ithome.com.tw/articles/10216864)
YA!本系列文已經進入第 5 天!在艦長拖了4 天的時間之後,今天我們終於要進到 Project 了!說是這麼說,但其實今天也還不會深入 Project 啦~(揍飛)
背景說明
從今天開始,後續的文章我們會試著模擬一個開發團隊的運作,藉此了解當一個團隊打算使用 GitLab 時,會逐一遇到哪些問題,並且需要使用 GitLab 的哪些功能,所以讓我們先來說明一下故事背景,大家可以想像一下這個情境。
伴隨著公司的發展計畫,從今天開始公司將要開展一項全新的產品,為此公司籌組了一個全新的開發團隊,計畫從零開始達成這項產品開發任務。最初開發團隊將由以下的成員組成:
- Boss
- PM
- Dev Leader
- Developer
- QA
依據這樣的故事背景,現在這個團隊要在老闆的一聲令下開始運作了!
從建立 Group 和 Project 開始
首先,團隊才剛組成,為了讓團隊能順利的開展工作,擁有 GitLab 較高 User 權限的 Dev Leader 需要負責為團隊建立所需之 GitLab Group 與 Project。
第一步我們先以 Unicorn 為名,建立第一層的 Internal Group,確保本產品所有的 Project 都隸屬於此 Internal Group,限制只有公司之內的 User 才能看見此產品隸屬的 Group 與 Project。
(Group 的 Visibility Level
設定為 Internal 即代表只有能登入此 GitLab 的 User 才能看見有此 Group 存在。)
接著替這次必須保密到家的重點產品,在該 Internal Group 中分別建立了名為 NCC-1701 的 Private Project,以及名為 SDF-1 的 Internal Project。最核心的產品程式碼必須保密到家,所以為其建立的是 Private Project;而圍繞著產品可能延伸產出的 Packages 則規劃保存在 Internal Project 中,因為也許未來公司其他產品計畫也有機會使用到這些 Packages,必須讓其他團隊的人有機會找到它。
(先進入 Group,再點擊 New project
建立隸屬該 Group 的 Project。)
(在新增 Project 時,可以選擇該 Project 隸屬哪個 Group 或 User,不過一般的 User 只能建立自己的 Project,只有較高權限的 User,才會如上圖有多個選項可以選擇。如果有不想被無關者發現的 Project,務必要將 Visibility Level
設定為 Private。)
為團隊成員設定合乎職責的 Member Permissions
Group 與 Project 建立完畢後,緊接著要將團隊所有的成員加入成為 Group 的 Member,並根據職責給予不同的 Member Permissions
。
- Boss 基本上只出一張嘴,為了避免他沒事亂按亂改,因此先分配為
Member Permissions
為 Guest。(老闆:桌上那個發射核彈的紅色按鈕可以按嗎?) - Dev Leader 因為是 Group 的建立者,因此
Member Permissions
為 Owner,擁有 Group 的最高權限,可以管理 Group 旗下的 Members、Projects 及各種 Settings。 - Senior Developer 是資深的開發者,也會負責 Code Review 與 git 分支管控的工作,因此
Member Permissions
為 Maintainer。 - Developer 是一般的開發者,只要專心寫程式即可,因此
Member Permissions
為 Developer,負責 Commit Code 與送出 Merge Request 給 Senior Developer 進行 Code Review。 - Tester 是測試人員,負責程式的測試與驗收,無需提交 Commit 或發送 Merge Request,但需要能夠回報 Issue 的權限,因此
Member Permissions
設定為 Reporter。
(依據不同的職責,設置合適的 Member Permissions
,做出適當的權限控管。)
一但加入成為 Group 的 Member,便會自動成為該 Group 底下所有 Project 的 Member,這功能能替我們節省許多設定 Member 的時間。
(查看 Project 的 Members 即可發現,Project 已直接繼承了 Group 的 Members,並且無法更改。)
雖然我們可以透過 Group 一次搞定自己團隊成員的 Member Permissions
,但因為有些職務角色會同時支援數個開發團隊,並非專屬於自己的團隊,同時這些角色也無需加入 Group 之下的每一個 Project。針對此種角色,我們就必須直接在各個 Project 的 settings > Members
逐一將他們設定為 Member。
(例如 PM 僅需關注主要產品之 Project,因此不加入 Group,而是依據 Project 逐一設定為 Member。)
小結
今天我們將團隊接下來工作會使用之 GitLab 的 Group、Project 及 Member Permissions 大致搞定。透過完成這項前置作業,後續團隊成員才能擁有足夠的權限來使用 GitLab。雖然這都只是一些 GitLab 基本的操作,如果是一人團隊時可能不太重要(因為一人團隊大概全都開最高權限、都設定為 Private Project 即可);但如果是多人團隊時,這些設定將與後續團隊成員的工作默契、職責歸屬、團隊開發流程與協作方式有關,可就不容小覷了。
今天的內容就先到這裡,明天我們會介紹一下 GitLab 官方提出的 GitLab Workflow,看一下其中有什麼獨到之處!我們明天見~
【新增補充】GitLab 原廠已經捨棄 GitLab Workflow,改為倡議 DevOps Lifecycle,至於 GitLab Workflow 則被原廠拿去當作 VS Code extension 的名稱。