zoukankan      html  css  js  c++  java
  • 搭建基于Jenkins的CI服务器

    安装Jenkins和创建任务这些操作网上一搜一大把,这里就没必要写了,直接就开始编译、单元测试,覆盖,git提交触发构建,构建失败发送给提交人邮件。

    因为项目比较复杂,为了懒省事我直接在CI服务器上安装了visual studio 2017 (主要就是为了那个VsDevCmd.bat)。

    这里呢为了保证CI能够正常编译、执行单元测试、覆盖率,我们对.net 项目做了如下约定:

    1.单元测试一般使用xunit 进行编写。

    2.Mock框架。

    对于core 项目需要安装一下几个NuGet包

    1.coverlet.msbuild  覆盖率

    2.XunitXml.TestLogger xml 格式记录器

    说完一些前置条件,现在开始正式的编译,执行单元测试,覆盖率

    对于.net framework 项目我们的编译肯定是使用MSBUILD 

    第一条命令是在当前的命令行窗口创建一个MSBuild 指令,然后 进行Nuget包还原,编译项目 ,后面的参数可以自行修改。

    第二条指令是进行单元测试与覆盖率,因为执行覆盖率时要执行单元测试,所以我就把两条指令放在了一起,避免不必要的损耗。

    生成覆盖率报告我使用的工具是OpenCover ,OpenCover 生成的报告是xml格式,Jenkins 无法识别(也可能是我不会折腾),所有我又使用了ReportGenerator工具对xml 进行了一个转换,把它转换成html格式。然后用Jenkins的HTML 报表插件展示出来。

    对于单元测试报告,因为Jenkins有相关的插件,所以直接就用xunit生成的xml格式的测试报告就可以了。

    这里说明一下,在执行单元测试时我使用的xunit.console.exe 这个命令行工具。没有把执行单元测试的步骤放入到MSBuild任务中去,有兴趣的人可以自行研究。

    好了到这里呢就完成了.net framework 项目的编译、单元测试、覆盖率 环节。

    对于Core项目,它的编译我使用的dotnet build ***.sln 方式,单元测试使用的是dotnet test ***.csproj 。之前说过对于core的覆盖率我使用的是coverlet.msbuild 这个MSBuild 扩展命令工具包。所以在执行单元测试的同时就可以生成覆盖率的报告。对于xunit的单元测试结果,我使用的XunitXml.TestLogger 这个MSBuild 扩展命令工具包。

    具体的命令如下:

    这一个dotnet test命令就完成了所有的工作,同样我最终还是使用ReportGenerator这个工具将覆盖率报告转换成HTML格式。

    最终的展示结果:

    上图是构建后的总览图。

    上图是覆盖率结果报表。

    单元测试报表

    对于git提交后触发构建,在git仓库为项目添加一个钩子即可。

  • 相关阅读:
    PythonI/O进阶学习笔记_2.魔法函数
    FTPClient下载文件,程序假死问题
    mui搜索框在ios平台上点击多次才弹出键盘的解决方法
    用UL+Li 实现横向导航条时设定宽度
    asp.net 用cache保存对象
    QQ Tea加密解密单元 Delphi
    关于在Webservice里使用LinqToSQL遇到一对多关系的父子表中子表需要ToList输出泛型而产生循环引用错误的解决办法!
    ExtJS中从WebService获取数据保存到本地,填充GridPanel实现静态数据分页
    .net 3.5 sp1 编译器发布的网站无法在没有打SP1补丁的主机上使用
    在ashx中使用session
  • 原文地址:https://www.cnblogs.com/pjjwpc/p/9333576.html
Copyright © 2011-2022 走看看