安装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仓库为项目添加一个钩子即可。

转载于:https://www.cnblogs.com/pjjwpc/p/9333576.html

搭建基于Jenkins的CI服务器相关推荐

  1. win7连接sftp_Windows 7下 搭建 基于 ssh 的sftp 服务器

    Windows  xp 下 搭建 基于ssh 的sftp 服务器,服务器端可以用freesshd,F-secure server等,filezilla server不可用,之前傻乎乎的用filezil ...

  2. 搭建基于Jenkins, Apache Mesos和Marathon的弹性高可用的持续集成环境

    2019独角兽企业重金招聘Python工程师标准>>> [编者按]持续集成的开发实践是目前的一个热门话题,在本文中,数人科技云平台负责人周伟涛解析其利用开源的Jenkins,Apac ...

  3. 在windows平台搭建基于nginx的直播服务器

    1.nginx简介 Nginx本身是一个非常出色的HTTP服务器,FFMPEG是非常好的音视频解决方案.这两个东西通过一个nginx的模块nginx-rtmp-module,组合在一起即可以搭建一个功 ...

  4. 搭建基于 nodejs 的 MQTT 服务器

    创建服务端 1.先从初始化一个 package.json 开始. npm init 2.安装 mqtt 服务器必要依赖项 mosca mqtt npm install mosca mqtt 3.根目录 ...

  5. xubuntu 搭建基于 gitolite 的 git 服务器

    搭建一个支持repo管理的android镜像,repo工具是基于git服务器,实践git 服务器的安装. Git 服务器的选择 git服务器有多个选择,gitolite,gitosis,gerrit, ...

  6. 自建git服务器 ssh,搭建基于SSH的Git服务器

    之前的一直使用的git作为版本控制工具 最早是同事本地搭建的git服务器保管代码 后来使用的是github私有仓库,保管代码,可以很方便的进行代码审查工作 最近心血来潮,自己尝试搭建,不算太难,小结一 ...

  7. 搭建基于springboot的FTP服务器

    引言 最近有一个在集成系统上提供1G以上文件下载的功能,还要提供文件的展示功能和删除的操作,因为常规的文件流速度慢并且容易断掉因此我们采用FTP的方式,系统架构如下图所示,这里我们采用的ftp框架是a ...

  8. saltapi java_搭建基于Jenkins salt-api的运维工具

    1. 安装salt-master和salt-minion 安装过程不再赘述,请参考http://docs.saltstack.com/en/latest/topics/installation/ind ...

  9. windows下搭建基于nginx的rtmp服务器

    Windows机器配置: Windows7旗舰版 64位 Intel(R) Core(TM)i5-2520 CPU @2.50GHz 2.50 GHz 内存: 4GB 1. 下载 nginx 1.7. ...

最新文章

  1. javaweb家居用品线上销售系统_智能家居订单管理系统方案设计路线
  2. java中的装箱及拆箱
  3. codeforecs Gym 100286B Blind Walk
  4. zsh: command not found: 解决方法
  5. Web API-DOM-滚动事件、加载事件和元素大小和位置
  6. 为什么.class文件查看不了_恕我直言,这可能是你见过最详细的class文件结构分析
  7. 啊哈C语言 第三章 【代码】【习题答案】
  8. yapi 权限_yapi部署
  9. 声反馈抑制使用matlab/simulink仿真
  10. python需要什么样的电脑_学习Python需要配备什么样的电脑
  11. Linux 系统进程管理
  12. [Unity存档系统]简单介绍Unity常见存档系统二JSON以及使用方法
  13. Python 使用pyinstaller打包exe文件报错: TypeError: an integer is required (got type bytes) 的解决方法
  14. python按某列拆分excel表格_Python对Excel按列值筛选并拆分表格到多个文件的代码...
  15. 什么是业务对象?业务逻辑是什么?
  16. 02-CSS基础知识梳理(I)
  17. Oracle 存储过程语法及使用
  18. Linux如何强制关闭PyCharm或者其他软件
  19. Continuous Graph Neural Networks
  20. 2021-05-2性能报告之HTML5 性能测试报告

热门文章

  1. 37)智能指针(就是自动delete空间)
  2. 为mysql数据库建立索引
  3. 砝码称重 洛谷 1441
  4. 微信企业号第三方应用开发[一]——创建套件
  5. Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
  6. xml学习总结(四)
  7. 使用SDL打造游戏世界之入门篇 - 5
  8. Volley 源码解析之网络请求
  9. Android 页面多状态布局管理
  10. 批处理命令无法连续执行