iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 16
1

我們假想情景中的 Developer 今天已經解完ㄧ張 Issue,現正準備送出 Commit 與 Merge Request。

Commit 與 Issue

為了解決 Issue #5,Developer 首先遵守 GitLab Flow 先由 develop 建立了名為 5-payment 的 Feature branch。

https://ithelp.ithome.com.tw/upload/images/20190929/20120986Zrq97rEsC7.jpg
(遵守規則,在新建立的 Feature branch 上進行開發。)

接著,為了解決 Issue 5 總共送了 2 次 Commit。為了讓 Commit 與 Issue 自動建立關聯,在 Commit Message 中,Developer 都主動提及了 Issue 的編號。

https://ithelp.ithome.com.tw/upload/images/20190929/20120986rxT8jZq4jd.jpg
(只要以 # 搭配 Issue 編號,GitLab 就會自動將 Commit 與 Issue 建立連結。)

https://ithelp.ithome.com.tw/upload/images/20190930/20120986mwA8dgFEpK.jpg
(只要有在 Commit Message 提及 Issue 的編號,GitLab 便會自動在 Issue 的詳細內容顯示有哪一個 Branch 與此 Issue 相關。同時 Issue 的異動歷史資訊也一樣會自動顯示有哪些 Commit 與此 Issue 相關。)

Merge Request 與 Code Review

接著 Developer 準備要送出 Merge Request。

https://ithelp.ithome.com.tw/upload/images/20190929/20120986BDxbQxDpsl.jpg
(GitLab 會主動在 UI 介面上提醒你剛才有 Commit 程式碼,主動詢問你是不是打算要 Create merge request。)

https://ithelp.ithome.com.tw/upload/images/20190929/20120986CRDSC5D68o.jpg
(建立 Merge request 時,GitLab 會主動根據 Commit message 帶入 TitleDescription 的內容。)

https://ithelp.ithome.com.tw/upload/images/20190929/20120986HpO7fiq5nG.jpg
(GitLab 在 DescriptionComment 的線上編輯器具備即時提示的功能,只要輸入 # 就會立即顯示有哪些 Issue。)

https://ithelp.ithome.com.tw/upload/images/20190929/20120986QoiavkB1Kn.jpg
(線上編輯器也具備 Quick Actions 功能,可以便捷的控制 GitLab 自動執行某些動作。例如這個 Merge request 要 Assignee 給 Senior Developer 處理,除了可以用下方的 UI 介面 Assignee 以游標去點選目標 User,也可以直接在 Description 中用 /assign 標注目標 User。)

由於 GitLab 已經與 Mattermost 整合,因此當 Developer 送出 Merge request 之後,Senior Developer 立即就在 Mattermost 的 Channel: merge-request 收到通知。

https://ithelp.ithome.com.tw/upload/images/20190929/20120986Iq5C4tINOT.jpg
(會顯示 Merge request 是由誰發出,並將相關連結一併附上。)

https://ithelp.ithome.com.tw/upload/images/20190929/20120986NcqySBAyPh.jpg
(被 Assignee 處理 Merge request 的 User,在他的 To-Do List 上,也會自動列出這項工作。)

Senior Developer 立即抽空查看目前送上來了程式碼,看完之後只能搖搖頭,這樣的品質可不能讓它通過。

https://ithelp.ithome.com.tw/upload/images/20190929/20120986rkIET0Ma7a.jpg
(Merge request 的介面一樣有提供 User 討論的空間,像是可以針對 Merge request 直接用「讚」與「差」來表達意見。)

https://ithelp.ithome.com.tw/upload/images/20190929/20120986egTmy7fynf.jpg
(負責 Code review 的 User 可以在 Merge request 的 Changes,直接針對某幾行程式碼撰寫 Comment。)

https://ithelp.ithome.com.tw/upload/images/20190929/20120986xFQpx9KBYw.jpg
(針對程式碼的 Comment 也會自動整併在 Discussion,並且成為待解決的 thread

由於 Merge request 被打回票,需要解決 thread,因此 Developer 在修正之後,又送了一次 Commit,並且在 Discussion 表明自己已解決 thread

https://ithelp.ithome.com.tw/upload/images/20190929/20120986LXfsmlqTwa.jpg
(後續送上來的 Commit 一樣會自動關聯在 Discussion 中,方便 User 查看。thread 提及的程式碼如果有產生異動,也同樣會自動顯示歷史資訊於 Discussion 中。)

再次 Code review 確認沒有問題之後,Senior Developer 按下 Merge 按鈕,程式碼順利合併,並且自動開始進行 develop 的 CI Pipeline。

https://ithelp.ithome.com.tw/upload/images/20190929/20120986DCvF13ZhZy.jpg
(Merge request 與 CI Pipeline 也會建立關聯,GitLab CI 也可以達成先跑某個特定的 CI Pipeline,一但通過就自動 Merge 的流程。)

再一次的 Mattermost 的 Channel 又自動推送了訊息,通知團隊成員們這個 Feature 已經順利 Merge。
https://ithelp.ithome.com.tw/upload/images/20190929/20120986tlKtM1egNs.jpg

與之同時,Issue 5 也被 GitLab 自動 Closed。

https://ithelp.ithome.com.tw/upload/images/20190929/20120986fC8J6VQH8I.jpg
(只要在 Commit message 或 Merge request 的 Discussion 中有撰寫 Close + Issue 編號的字串,GitLab 就會在 Merge request 順利通過的時候,自動幫你把 Issue close。)

小結

今天我們繼續跟著假想情境的 Developer 與 Senior Developer 工作,看了一下他們是如何利用 GitLab 的 Merge request 功能進行溝通協作,順利將 Issue 解決。

GitLab 提供了些便捷的功能,能夠半自動的在 User、Issue、Commit、Commit Message、Merge request 之間建立關聯,如善用這些功能,將能為團隊在開發工作的溝通協作及效率上提供一些助益。

另外,就如我們在早先的文章亦有提過,GitLab 能夠與 Mattermost 這套非常類似 Slack 的團隊溝通協作工具串接整合,Project 上的任何異動狀況都能主動的推送至 Mattermost,即時通知 User。不用擔心會漏接任何異動資訊,你反而要擔心資訊過量,需要評估哪些層級的資訊不用傳送至 Mattermost。

今天的分享就到這邊了,看來我們假想的開發團隊正持續地向前進,接下來她們還會遇到哪些狀況呢?鐵人賽,我們明天見~

參考資料


上一篇
GitLab: To-Do List 與 Milestones
下一篇
GitLab: Issue Templates & Merge Request Templates
系列文
和艦長一起 30 天玩轉 GitLab30

尚未有邦友留言

立即登入留言