雲端供應商DigitalOcean宣布開源其相依性分析工具Gta,這項工具能夠進行轉換分析,尋出相依項目遭到變更的套件。Gta透過查詢Git歷史紀錄,追蹤Go套件的相依性,在單一儲存庫建置工作管線,只對已變更的套件進行重建,以大幅節省CI時間。

Gta在技術上可以理解為Go Test Auto,DigitalOcean開發Gta的目的,是為了要解決單一且龐大儲存庫中,程式碼更改產生相依性變更,在持續整合上帶來的麻煩。DigitalOcean中有一個稱為Cthulhu的單一儲存庫,裡面存放了約6年的Go程式碼,其包含了不同的專案以及函式庫,官方提到,單一儲存庫最大的優點,就是能夠對整個儲存庫進行大動作的變更,而不需要擔心下游儲存庫被破壞,但是隨著Cthulhu中程式碼增加,CI建置時間也呈指數成長。

雖然Go程式碼建置的速度非常快,但官方提到,在2016年Cthulhu儲存庫CI建置工作,約需要20分鐘才能完成,而這拖慢了整個開發周期。為了解決這個問題,DigitalOcean內部工程師開發Gta工具,能夠檢查Git歷史紀錄,從分支合併找出受變更的檔案,並利用此資訊來確定建置時,要對哪些套件進行測試。

DigitalOcean舉例,當用戶提交do/teams/example/droplet套件修改,而這個套件被其他套件do/teams/example/hypervisor引用,Gta會藉由檢查Git歷史紀錄,找出這兩個需要測試的套件。官方提到,在CI流程中加入Gta,能大幅減少Cthulhu建置的時間,從原本平均建置需要20分鐘,到現在只要2到3分鐘。

Gta可以被用在建置工作管線的任一個階段,包括靜態分析、程式碼編譯、測試,以及構件的建置與部署都沒問題。在部分需要建構所有內容的情況,只要在測試分支名稱加入-force-test字樣,或是在拉取請求加入force-test標籤,就能對所有內容進行建置。

熱門新聞

Advertisement