GitLab CI/CD課程22

Run Unit Tests & Collect Test Reports

ZONGRU Li
Aug 12, 2022

這邊開始清空既有的Pipeline,只留下workflow →rule

然後先撰寫測試job部分,並在裡面script撰寫跑測試:

commitpipeline就啟動了,而且只有一步job,然後看看結果:

如果dockergitlab runner沒跑,記得啟動一下:

#執行啟動docker runner指令:
sudo gitlab-runner start

回來就看到pipeline跑完:

回到前一頁還有一個分頁是:

裡面沒有任何的測試報告可以查看:

但實際上我們是有產出測試報告的:

所以要讓GitLab顯示產出的報告,要再調整Pipeline內容:

需要加入"artifect"Pipeline裡面:

但是對應的報告格式要找到有支援的(junit有)

也就是GitLab Runner會把該成果檔案轉交給GitLab Server呈現

另外雖說JUnit本身是專門為Java支援的測試套件

但其實也有各種程式語言有透過套件支援(JaveScript,Python,Ruby…etc)

另外要避免測試失敗時

GitLab Runner就不轉拋結果xml檔案給GitLab Server

另外再加入條件:

Commit後看到:

另外在Pipeline頁面也會出現可以下載artifact的選項:

這邊暫時將一個測試案例改成失敗,編輯app/server.test.js:

另外還可以針對產出的報告下載整理有一個結構性目錄的,加入:

上面這個做法是用在如果有很多個測試步驟

可能會想將各步驟測試結果分目錄擺放後壓縮下載使用(等下會下載來看看)

以上Commit後看到:

進去裡面看到:

然後會發現還多出:

回到下載的頁面:

會看到這個測試Job最後的結果檔案會放在:

所以若有很多步驟Jobs有不同的測試結果,就可以用paths目錄區分

另外可以注意到有趣的點是開發過程即將合併回主線的測試報告:

首先記得前面有限制條件,是有允許MR時候也跑測試的

這時候切一個Branch出去當作開發:

然後針對這個新的Branch嘗試刪減Dockerfile:

這時候特別注意單元測試中是有檢測有無Dockerfile的:

這時候可以針對這個移除DockerfileBranchMR,來觸發Pipeline:

此時就會觸發Pipeline流程:

一陣子後看到:

Commit內容:

Pipelines內容:

Changes內容:

回到開頭的Overview頁籤:

展開那個Test summary看到:

也就是提示說這並不完全是這次的MR造成的失敗!

點開看到:

接著捨棄該次MR就按:

以上就完成了基本CICD步驟的可能的第一步:Run Test

此時的Pipeline檔案.gitlab-ci.yml file內容為:

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet