演講紀錄 - Advanced GitLab CI Workshop @DevOpsDays Taipei 2021

Advanced GitLab CI Workshop

01 - 活動紀錄

GitLab CI 對於入門者相當的友善,但由於版本變化快速,一段時間沒關注,可能就會錯過 GitLab 在 gitlab-ci.yml 上新的或更方便的特性,如 GitLab CI 的平行處理、平行處理矩陣、繼承、參考等等的用法,在這場 Workshop 中,將帶給參加者認識進階的 GitLab CI 使用及一些除錯、降低 GitLab 執行時間的小技巧。

GitLab CI - 在 Merge Request(MR) 中檢視 PHP 測試代碼覆蓋 (Code Coverage) 情況

在上一篇 在 Pipeline 檢視 PHPUnit 單元測試報告,透過 artifacts:reports:junit 的機制,使每次 Pipeline 執行後,就能馬上看到單元測試報告,有了測試報告之後,可能就會開始思考,那 Code Coverage 測試代碼覆蓋的狀況,是不是也可以在 Merge Request 的過程中就看到呢?

答案是可以的,而且在 GitLab CI/CD 的免費版本中就有這個功能。在 GitLab 12.9 版後,只需要透過 artifacts:reports:cobertura 搜集 Cobertura XML 格式的報表就可以完成。這部分與 artifacts:reports:junit 的原理是一樣的,只需要讓 Pipeline 的工作可以產出所需要的格式的檔案,透過 artifacts:reports:cobertura 將檔案搜集起來,就可以在 Merge Request 的畫面中看到視覺化的測試代碼覆蓋情況。

Test Coverage Visualization

那麼,在 PHP 該怎麼做出符合Cobertura XML格式的測試程式碼覆蓋狀況檔案呢?

GitLab CI - 在 Pipeline 檢視 PHPUnit 單元測試報告

GitLab CI Report Demo

許多使用 GitLab 作為版本控制工具的使用者,要開始搭配 GitLab CI/CD 建立專案的持續整合流程時,一開始通常是從專案既有的測試開始著手,讓「測試」在每次原始碼 commit 後就自動執行,進而增加原始碼的品質。

在 GitLab 版本 11.2 之後,GitLab CI 開始提供了讓使用者可以簡便的在 Pipeline 中就看到 Pipeline 過程中產出的報表功能。其主要是透過 artifacts 夾帶 Pipeline 工作中產出的報表。

在 GitLab CI 提供的眾多報表功能中,artifacts:reports:junit 主要是用來搜集並呈現「單元測試」執行結果的報表,使用JUnit report format XML files,看到 JUnit 熟悉的朋友可能知道,這是 Java 語言在撰寫單元測試常用的工具。那麼,在 PHP 語言中,如果也要產出同樣的報表,應該要怎麼產生呢?

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器