GitLab CI/CD課程22
這邊開始清空既有的Pipeline,只留下workflow →rule
然後先撰寫測試job部分,並在裡面script撰寫跑測試:
commit後pipeline就啟動了,而且只有一步job,然後看看結果:
如果docker的gitlab 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的:
這時候可以針對這個移除Dockerfile的Branch做MR,來觸發Pipeline:
此時就會觸發Pipeline流程:
一陣子後看到:
Commit內容:
Pipelines內容:
Changes內容:
回到開頭的Overview頁籤:
展開那個Test summary看到:
也就是提示說這並不完全是這次的MR造成的失敗!
點開看到:
接著捨棄該次MR就按:
以上就完成了基本CICD步驟的可能的第一步:Run Test
此時的Pipeline檔案.gitlab-ci.yml file內容為: