搭建基于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倉庫為項目添加一個鉤子即可。

轉載于:https://www.cnblogs.com/pjjwpc/p/9333576.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/397492.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/397492.shtml
英文地址,請注明出處:http://en.pswp.cn/news/397492.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php打補丁,PHPMailer庫打補丁后漏洞仍然存在,怎么解?

開源PHPMailer庫被披露存有一個嚴重的遠程代碼執行漏洞。這個漏洞在被修補后,又進行了二次修復,因為第一次沒有充分解決問題。那么,這個漏洞是如何工作的?為什么原始補丁沒有解決問題?Michael Cobb:代碼庫和…

Ubuntu下安裝jdk經驗分享

Ubuntu下安裝jdk經驗分享http://www.jb51.net/article/55131.htm轉載于:https://www.cnblogs.com/kangtuohongwai/p/6002555.html

BZOJ 1270: [BeijingWc2008]雷濤的小貓( dp )

簡單的dp..dp(i,j) max(dp(x,y))cnt[i][j], (x,y)->(i,j)是合法路徑.設f(i) max(dp(x,y))(1≤x≤N, 1≤y≤i), g(i,j) max(dp(i, k))(1≤k≤j)那么dp(i,j) max(f(jdelta), g(i,j1))cnt[i][j]. 遞推即可. 時間復雜度O(NH)----------------------------------------------…

【校招面試 之 C/C++】第12題 C++ 重載、重寫和重定義

1、成員函數重載特征: a.相同的范圍(在同一個類中); b.函數名字相同; c.參數不同(參數個數不同或者參數類型不同,但是返回值不同不能使重載); d.virtual關鍵字可有可無…

mac php5.6.30與php7共存,認識Homebrew以及在Mac上同時安裝PHP5及PHP7

Homebrew幾乎是Mac上必備的軟件,用于下載安裝和管理其他軟件。尤其對于程序員,講真,本人到現在仍然不知道在Mac上如何不借助Homebrew來搭建php-apache-mysql開發環境。認識HomebrewHomebrew是一個開源項目,據說它的作者曾經去谷歌…

POJ 1141

題意&#xff1a;給出一個表達式的子序列&#xff0c;要你填充這個序列&#xff0c;保證最終形成的序列長度最短&#xff0c;也就是添加的括號最少 這個子序列要遵循括號匹配的原則。 分析&#xff1a;轉移方程dp[i][j]min(dp[i][k],dp[k1][j]).i<k<j.dp[1][1]1; dp[i][j…

PHP array_count_values() 函數用于統計數組中所有值出現的次數。

定義和用法 array_count_values() 函數用于統計數組中所有值出現的次數。 本函數返回一個數組&#xff0c;其元素的鍵名是原數組的值&#xff0c;鍵值是該值在原數組中出現的次數。 語法 array_count_values(array) 參數 描述 array 必需。規定輸入的數組。 例子 <?php …

SpringDay01

一&#xff1a;什么是Spring。 簡單的理解就是一個可以裝web層&#xff0c; service層&#xff0c; dao層&#xff0c;這三層對象的容器。 二&#xff1a;Spring搭建 1.導包&#xff1a;核心四個包和log4j兩個包 2.注冊對象&#xff1a;User類 3.書寫配置注冊對象到容器 a>導…

bom_clear.php,thinkphp清除BOM方法

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓在utf-8編碼文件中BOM在文件頭部&#xff0c;占用三個字節&#xff0c;用來標示該文件屬于utf-8編碼&#xff0c;現在已經有很多軟件識別bom頭&#xff0c;但是還有些不能識別bom頭&#xff0c;比如PHP就不能識別bom頭&#xff0c;…

(算法)Trapping Rain Water I

題目&#xff1a; Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining. For example, Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6. 思路&#xff1a; 題目的意思是說&…

字符數組拷貝與strcpy函數

代碼&#xff1a; char str1[10],str2[10];for (int i0;i<10;i){str1[i]a;}strcpy(str2,str1); 讓找出錯誤的地方。 先來看下strcpy函數&#xff1a; 使用格式&#xff1a;char* strcmp&#xff08;char* buffer&#xff0c;char*str&#xff09;功 能: 把從str地址開始且含…

java中的NAN和INFINITY

2019獨角獸企業重金招聘Python工程師標準>>> java浮點數運算中有兩個特殊的情況&#xff1a;NAN、INFINITY。 1、INFINITY&#xff1a; 在浮點數運算時&#xff0c;有時我們會遇到除數為0的情況&#xff0c;那java是如何解決的呢&#xff1f; 我們知道&#xff0c;在…

php框架tp5工作流程,tp5框架流程

之前沒怎么了解過&#xff0c;但用過TP3.2.網上查了下說是區別很大&#xff0c;特此記錄下。流程&#xff1a;1.入口文件默認是 public目錄下的index.php// 定義應用目錄define(APP_PATH, __DIR__ . /../application/);// 加載框架引導文件require __DIR__ . /../thinkphp/star…

有移動規則2

import org.robochina.airobot.tank.*; import org.robochina.math.*; import java.awt.geom.*; import java.util.*;/*** 這個類對應一個機器人&#xff0c;根據需要實現相應的Action處理函數&#xff0c;* 就可以訂制自己的機器人。*/ public class Text extends SimpleRobot…

Troubleshooting(三):網絡

2019獨角獸企業重金招聘Python工程師標準>>> 前言 在 Troubleshooting 過程中&#xff0c;檢查完進程信息后&#xff0c;接下來就是排查網絡情況的時候了&#xff0c;初略翻過《TCP/IP 詳解卷一&#xff1a;協議》這本書&#xff0c;簡直跟看《深入理解 Linux 內核》…

SqlServer 備份還原教程

看了眾多教程&#xff0c;自己也寫個增強記憶&#xff0c;錯誤地方麻煩指出。 ———————————————————————-備份——————————————————————– 1.打開數據庫&#xff0c;成功連接 2.找到要備份的數據庫&#xff0c;圖中演示備份數據庫te…

php通過實現excel導入,php實現excel導入數據

表單頁面 if($_POST [import]"導入數據 "){$leadExcel$_POST[leadExcel];//echo $leadExcel;die;if($leadExcel "true"){//echo "OK";die();//獲取上傳的文件名$filename $_FILES[inputExcel][name];//上傳到服務器上的臨時文件名$tmp_name $…

深入理解計算機系統----讀書筆記

第二部分 信息的表示和處理 信息存儲&#xff1a; 二進制&#xff08;0101001&#xff09;&#xff0c; 八進制&#xff0c;十六進制&#xff08;0x32FD&#xff09; 字&#xff08;word size&#xff09;指明整數和指針數據的標稱大小&#xff08;normal size&#xff09;&…

FiddlerScript-常用總結

沒有用過Fiddler的人應該對FiddlerScript沒啥感觸&#xff0c;我是真心覺得FiddlerScript對測試有一定的幫助哈。在web前端開發過程中&#xff0c;Fiddler是最常用的一款調試工具&#xff0c;那對于測試來說&#xff0c;對測試來說也是一大利器。在大多數情況下&#xff0c;通過…

OpenStack-Zun 使用

Zun組件簡介 Zun是Openstack中提供容器管理服務的組件&#xff0c;于2016年6月建立。Zun的目標是提供統一的Openstack API用于啟動和管理容器&#xff0c;支持多種容器技術。Zun原來稱為Higgins&#xff0c;后改名為Zun。 Zun計劃支持多種容器技術&#xff0c;Docker&#xff0…