搭建基于Jenkins的CI服务器
安裝Jenkins和創(chuàng)建任務(wù)這些操作網(wǎng)上一搜一大把,這里就沒必要寫了,直接就開始編譯、單元測(cè)試,覆蓋,git提交觸發(fā)構(gòu)建,構(gòu)建失敗發(fā)送給提交人郵件。
因?yàn)轫?xiàng)目比較復(fù)雜,為了懶省事我直接在CI服務(wù)器上安裝了visual studio 2017 (主要就是為了那個(gè)VsDevCmd.bat)。
這里呢為了保證CI能夠正常編譯、執(zhí)行單元測(cè)試、覆蓋率,我們對(duì).net 項(xiàng)目做了如下約定:
1.單元測(cè)試一般使用xunit 進(jìn)行編寫。
2.Mock框架。
對(duì)于core 項(xiàng)目需要安裝一下幾個(gè)NuGet包
1.coverlet.msbuild? 覆蓋率
2.XunitXml.TestLogger xml 格式記錄器
?
說完一些前置條件,現(xiàn)在開始正式的編譯,執(zhí)行單元測(cè)試,覆蓋率
對(duì)于.net framework 項(xiàng)目我們的編譯肯定是使用MSBUILD?
第一條命令是在當(dāng)前的命令行窗口創(chuàng)建一個(gè)MSBuild 指令,然后 進(jìn)行Nuget包還原,編譯項(xiàng)目 ,后面的參數(shù)可以自行修改。
第二條指令是進(jìn)行單元測(cè)試與覆蓋率,因?yàn)閳?zhí)行覆蓋率時(shí)要執(zhí)行單元測(cè)試,所以我就把兩條指令放在了一起,避免不必要的損耗。
生成覆蓋率報(bào)告我使用的工具是OpenCover ,OpenCover 生成的報(bào)告是xml格式,Jenkins 無法識(shí)別(也可能是我不會(huì)折騰),所有我又使用了ReportGenerator工具對(duì)xml 進(jìn)行了一個(gè)轉(zhuǎn)換,把它轉(zhuǎn)換成html格式。然后用Jenkins的HTML 報(bào)表插件展示出來。
對(duì)于單元測(cè)試報(bào)告,因?yàn)镴enkins有相關(guān)的插件,所以直接就用xunit生成的xml格式的測(cè)試報(bào)告就可以了。
這里說明一下,在執(zhí)行單元測(cè)試時(shí)我使用的xunit.console.exe 這個(gè)命令行工具。沒有把執(zhí)行單元測(cè)試的步驟放入到MSBuild任務(wù)中去,有興趣的人可以自行研究。
好了到這里呢就完成了.net framework 項(xiàng)目的編譯、單元測(cè)試、覆蓋率 環(huán)節(jié)。
?
?
?
對(duì)于Core項(xiàng)目,它的編譯我使用的dotnet build ***.sln 方式,單元測(cè)試使用的是dotnet test ***.csproj 。之前說過對(duì)于core的覆蓋率我使用的是coverlet.msbuild 這個(gè)MSBuild 擴(kuò)展命令工具包。所以在執(zhí)行單元測(cè)試的同時(shí)就可以生成覆蓋率的報(bào)告。對(duì)于xunit的單元測(cè)試結(jié)果,我使用的XunitXml.TestLogger 這個(gè)MSBuild 擴(kuò)展命令工具包。
具體的命令如下:
這一個(gè)dotnet test命令就完成了所有的工作,同樣我最終還是使用ReportGenerator這個(gè)工具將覆蓋率報(bào)告轉(zhuǎn)換成HTML格式。
最終的展示結(jié)果:
上圖是構(gòu)建后的總覽圖。
上圖是覆蓋率結(jié)果報(bào)表。
單元測(cè)試報(bào)表
?
對(duì)于git提交后觸發(fā)構(gòu)建,在git倉庫為項(xiàng)目添加一個(gè)鉤子即可。
轉(zhuǎn)載于:https://www.cnblogs.com/pjjwpc/p/9333576.html
總結(jié)
以上是生活随笔為你收集整理的搭建基于Jenkins的CI服务器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么会梦到小孩子
- 下一篇: 字符数组拷贝与strcpy函数