搭建基于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仓库为项目添加一个钩子即可。
搭建基于Jenkins的CI服务器的更多相关文章
- 庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境
庐山真面目之十一微服务架构手把手教你搭建基于Jenkins的企业级CI/CD环境 一.介绍 说起微服务架构来,有一个环节是少不了的,那就是CI/CD持续集成的环境.当然,搭建CI/CD环境的工具很多, ...
- Windows 7下 搭建 基于 ssh 的sftp 服务器
Windows xp 下 搭建 基于 ssh 的sftp 服务器,服务器端可以用 freesshd,F-secure server等,filezilla server不可用,之前傻乎乎的用file ...
- Linux搭建基于BIND的DNS服务器
Linux搭建基于BIND的DNS服务器 实验目标: 通过本实验掌握基于Linux的DNS服务器搭建. 实验步骤: 1.安装BIND 2.防火墙放通DNS服务 3.编辑BIND的主配置文件 4.编 ...
- Linux搭建基于Apache的HTTP服务器
Linux搭建基于Apache的HTTP服务器 实验目标: 通过本实验掌握基于Linux的WWW服务器搭建. 实验步骤: 1.安装http服务 2.防火墙放通http服务 3.编辑测试网页 4.开 ...
- 使用Jenkins搭建iOS开发的CI服务器
目录 简介 下载并运行 Jenkins配置 安装git插件 E-mail设置 自动化构建 远程仓库设置 触发条件 ...
- 【Gerrit】Gerrit与Jenkins/Hudson CI服务器搭建
配置Git 很多系统(例如Linux)已经默认提供了Git,在Git主页也可以找到安装程序.对于Windows用户,最好的选择是MsysGit.请注意,如果你安装了Apple Developer To ...
- 如何搭建基于Docker的gitlab服务器集成CI/CD实现DEVOPS(完整版)
From this lesson you will learn about 1,How to install and configure a docker based gitlab server 2, ...
- 在window系统下搭建基于ssh的git服务器
以下是基于window server 2012搭建的,学习搭建过程需要很多问题,找了许多文章做了一下总结. 1.所需的软件 Git for Windows: MsysGit(Git-1.7.4-pre ...
- 2019最新最全HUSTOJ本地及云端服务器搭建(基于腾讯云服务器)
在刚接触ACM的时候,对于那些在线测评的网站很感兴趣,就在网上搜索了一下,在Github上发现了一个有趣的项目,然后在 Github 上获取 了HUST OJ 的开源项目代码,根据网上的教程踩了无数的 ...
随机推荐
- testng依赖
Testng提供了两种依赖实现 1.强制依赖:某个测试用例之前需要执行的依赖链中如果有一个失败,那么接下来所有的测试都不会被执行 2.顺序依赖(软依赖):顺序依赖的用处更多是用来检测一个测试链是否按照 ...
- element-ui 的input组件 @keyup.enter事件的添加办法
<el-input placeholder="请输入密码" type="password" @keyup.enter.native="login ...
- C# 实现图像快速 水平 垂直 翻转
C# 图像水平,垂直翻转的方法,速度很快 重新把图像绘制成翻转的方法 /// <summary> /// 图像水平翻转 /// </summary> /// <para ...
- 【CF173B】Chamber of Secrets(二分图,最短路)
题意:给你一个n*m的地图,现在有一束激光从左上角往右边射出,每遇到‘#’,你可以选择光线往四个方向射出,或者什么都不做,问最少需要多少个‘#’往四个方向射出才能使关系在n行往右边射出. 思路:将每一 ...
- 51nod 1201 整数划分
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1201 DP转移方程:dp[i][j] = dp[i-j][j]+dp[i ...
- HDU 5266 pog loves szh III(区间LCA)
题目链接 pog loves szh III 题意就是 求一个区间所有点的$LCA$. 我们把$1$到$n$的$DFS$序全部求出来……然后设$i$的$DFS$序为$c[i]$,$pc[i]$为$c ...
- Truck History(最小生成树)
poj——Truck History Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 27703 Accepted: 10 ...
- ubuntu下某些文件目录
1.#include <stdio.h> 2.#include <stdlib.h> stdio.h和stdlib.h的路径:/usr/include
- jenkins的Pipeline代码流水线管理
1.新建一个pipline任务 2.自写一个简单的pipline脚本 a.Pipeline的脚本语法在Pipeline Syntax中,片段生成器,示例步骤中选择builf:Build a job b ...
- spring security 单一账户多地方登陆提醒, ajax 拦截器 Interceptor
spring-security.xml部分代码: <http auto-config="false" > <access-denied-handler ref=& ...