使用 GIT Bisect 指令進行專案除錯快速找到問題

Bisect Example 01

一、使用 GIT 的 Bisect 指令的背景

在系統開發的過程中,難免在無意間製造 bug,但在發現系統有問題之後,該怎麼樣快速的找到產生問題的原始碼,這就是另外一門學問了。

現在開發者通常使用 GIT 作為版本控制工具,而 GIT 可以怎麼樣提供開發者快速找到問題呢?大家可以參考 GIT 的 bisect 這個指令。以下提供一個在 PHP 開發的環境下,使用 Bisect 的案例來供大家參考。

演講紀錄 - 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格式的測試程式碼覆蓋狀況檔案呢?

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