GitLab Cycle Analytics & Charts

本系列文是從 iT 邦幫忙鐵人賽系列文章搬至 gitlab-book.tw,鐵人賽撰文時 GitLab 仍為 12.x 版本,因此本系列文內容已有部分過期,本次搬移至此後,會視狀況新增一些補註說明。

本系列文是從 iT 邦幫忙鐵人賽系列文章搬至 gitlab-book.tw,鐵人賽撰文時 GitLab 仍為 12.x 版本,因此本系列文內容已有部分過期,本次搬移至此後,會視狀況新增一些補註說明。 鐵人賽原文網址:https://ithelp.ithome.com.tw/articles/10227541

【新增補充】GitLab 原廠已經捨棄 GitLab Workflow,改為倡議 DevOps Lifecycle,至於 GitLab Workflow 則被原廠拿去當作 VS Code extension 的名稱。 GitLab 原廠不止捨棄原本推崇的 GitLab Workflow,甚至將當年介紹何為 GitLab Workflow 的 文章徹底刪除(即是本文「參考資料」中的連結 https://about.gitlab.com/2016/10/25/gitlab-workflow-an-overview/),只能說官方真是做得很絕。 因此本文的關於 GitLab Workflow 的內容基本上都是過期了,但雖說是過期,也只是對於 GitLab 原廠而言是過期的,筆者個人的想法是,它依然是一個值得我們參考的範本,如果你對於該如何規劃自己團隊的 Workflow 毫無頭緒時,它依然是具備一定程度的參考價值。

《Day 6 初探 GitLab Workflow & GitLab Flow》,我們有提到 Workflow 的最後一個步驟是 Feedback,對此 GitLab 提供了 Cycle Analytics 的功能,幫助團隊能夠了解每個步驟大致上個別花費了多少時間。

一樣用的老梗來說明,如果我們想要減肥,首先要做的不是去尋找各種減肥妙方,第一個步驟應該是先去量體重、體脂,知道自己身體的現況之後,再來訂定減肥計劃。同理,如果想要「持續改善」團隊的 Workflow、生產力,首先你也需要一些數據做為參考,幫助你找出團隊可能的瓶頸點。

Cycle Analytics

只要進入 Project > Cycle Analytics 即可看見下圖的畫面。在畫面中可以看見 GitLab 規劃 Cycle Analytics 可以幫忙我們自動計算 7 個不同步驟的時間數據。

1.jpg

這幾個步驟的都有各自計算的條件,只要達成條件就會自動收集數據。

  • Issue: 會自動收集從 Issue 被開立直到被設置了 milestone 或被移動至 Issue Board 的 list (例如移動至 To-DO)需要經過多久時間。這正是對應 GitLab Workflow 10 個步驟中,從 Idea 到 Issue 這兩個步驟,也就是當 Idea 被開立為一張又一張的 Issue(Idea) 之後,要經過多久的時間才會從 Idea 被轉變成真正需要執行的 Issue。
  • Plan: 會自動收集從 Issue 被排定為需要執行的工作項目之後,要經過多久時間才會出現首個與該 Issue 相關的 Commit。意思就是我們假設當 Issue 被排定為工作項目時,同時就被指派給某個工程師負責,工程師收到 Issue 之後,就會開始構思(Plan)該如何解決它,當他構思(Plan)完畢之後,他便會建立一個 Feature branch 並送出 first commit,開始著手實踐,這整段過程要花多久時間,就是 Plan。
  • Code: 會收集 Issue 的首個 Commit 到產生與此 Issue 相關的 Merge request 要經過多久時間。當工程師送出首個 Commit 之後,中間還會經過數次 Commit,等到該 Issue 的內容都被撰寫完畢之後,工程師就會送出 Merge request,而這整段撰寫程式花費多久時間,即是 Code。
  • Test: 會自動收集前述該 Issue 的 Feature branch 其 CI Pipeline 中的各項 CI Job 分別花了多久時間才執行完畢。理論上 Feature branch 內的各項 CI Job 都是與測試相關的內容,這些都被歸類在 Test。
  • Review: 會自動收集 Merge request 從開立直到被 merge 或 close 為止,需要經過多久時間。當工程師送出 Merge request 之後,接著由資深工程師負責 Review,假如有任何的問題導致尚不能 Merge 還必須進一步修改,工程師們可以在 Merge request 的頁面上進行討論,等到所有的問題都被解決之後才將程式 Merge 回主要的 branch,這整段時間與過程被歸類在 Review。
  • Staging: 計算從 Merge request 完成程式碼的 merge 之後一直到它被順利部署至 Production 環境需要經過多久時間。
  • Production: 計算從 issue 開立直到它被部署至 Production 環境需要經過多久時間,也就是從一個 Idea 的產生直到它走完整個 Workflow 要花費多久時間。

試用 Cycle Analytics

下面我們一樣利用先前試用 Auto DevOps 建立的範例 Project 來試用 Cycle Analytics。

  1. 首先建立一個新的 Issue,但不設置它的 Milestone。

    2.jpg

  2. 等個幾分鐘後,我們再更新 Issue,為它設置 Milestone。

    3.jpg

    於是 Cycle Analytics 就能得到 Issue 的數據。

    4.jpg

    5.jpg

  3. 接著為 Issue 建立 Feature branch,並且送出 first commit。記得 Commit message 要標註 Issue 編號,例如 #1

    6.jpg

    於是 Cycle Analytics 就能得到 Plan 的數據。
    7.jpg

    8.jpg

  4. 下一步我們要以這個 Feature branch 建立 Merge request。記得 Merge request 的描述中也要包含 Issue 的編號及 Close 字串,例如 Closes #1

    9.jpg

    如此一來 Cycle Analytics 就能得到 Code 的數據。
    10.jpg

    (不好意思,這個範例太假。)
    11.jpg

  5. 由於 Auto DevOps 會自動為我們的 Feature branch 產生 CI Pipeline,因此這一步我們不需要特別做什麼,只要等待 CI Job 執行完畢即可。

    12.jpg

    Cycle Analytics 自動會收集 Test 的數據。
    13.jpg

    14.jpg

  6. 接著,我們前往 Merge request 的頁面,按下 Merge 按鈕完成 Merge 的動作。

    15.jpg

    於是 Cycle Analytics 就能得到 Review 的數據。
    16.jpg

    17.jpg

  7. 同樣的 Auto DevOps 有幫我們產生 Staging Deploy 與 Production Deploy 的 CI Job,因此只要等待 CI/CD Pipeline 完成 Stage: Staging,接著我們趕快按下 Production Deploy 的按鈕即可。

    18.jpg

    等到 Production Deploy 都完成之後,Cycle Analytics 就能得到 Staging 與 Production 的數據。
    19.jpg

Chart

除了 Cycle Analytics 之外,GitLab 也有提供多種 Chart。這些 Chart 分屬在多個功能之下,一樣能為團隊提供一些 Feedback。

Repository Charts

20.jpg

CI/CD Charts

21.jpg

Milestones 之下的 Burndown Chart

有在跑 Agile 的朋友應該都聽過 Burndown Chart。這個是付費功能,但如果你想試用看看,只要在 gitlab.com 上將 Project visibility 設為 Public 就會出現。下面就直接借用官方文件的圖片了。

22.jpg

(圖片來自 https://docs.gitlab.com/ee/user/project/milestones/burndown_charts.html)

Project Insights

這也是另外一個付費功能,同樣如果想試用看看,只要在 gitlab.com 上將 Project visibility 設為 Public 就會出現。下面一樣就直接借用 GitLab 官方文件的範例圖片。

23.jpg

(圖片來自 https://docs.gitlab.com/ee/user/project/insights/)

小結

再次重申 Feedback 是 GitLab Workflow 最後也是非常重要的一個步驟,有了 Cycle Analytics 為我們自動收集的這些數據,團隊就可以做為參考,以此回顧專案進度、工時與各環節的控管狀況,幫助團隊找出目前開發流程中可能的瓶頸點。當然這些數據是死的,而且只要一不小心沒有按著 GitLab 規定的順序操作,GitLab 就無法自動收集這些數據。因此數據僅供參考,團隊的「持續改善」可不能只盯著數字,還是要收集多方的回饋,與團隊討論取得共識之後,再實施改善計畫。

今天就分享到這裡,鐵人賽也進入倒數了,明天就是隨便亂哈拉的總結嘍!我們明天見~

參考資料