好代碼是管出來的——使用Jenkins搭建CI服務器

  Jenkins是一個開源的跨平臺的CI工具,它能夠部署在Windows、Linux等平臺上,而且Jenkins提供了很是豐富的插件來幫助完成編譯、測試、部署等工做。
  本文將介紹在Windows平臺上使用Jenkins完成.Net Core應用的持續集成環境搭建,其主要內容有:html

Jenkins下載與安裝

  本例使用Jenkins2.136版本進行演示,Jenkins下載地址:https://jenkins.io/download/
  1. 下載Jenkins的Windows安裝器:服務器

  

  2. 經過安裝嚮導完成Jenkins安裝:工具

  

  Jenkins的默認端口是8080,當安裝完成後能夠經過該端口訪問Jenkins:post

  

  3. 根據Jenkins的配置嚮導完成相應配置,並進入Jenkins:
  選擇經常使用插件,這些插件包含了Git、SVN等經常使用插件:單元測試

  

  建立用戶:測試

  

  進入Jenkins:spa

  

建立一個.Net Core編譯任務

  1. 建立一個新任務:.net

  

  填寫任務名稱選擇自由風格項目:插件

  

 

  2. 修改任務配置:xml

  

  代碼庫:

  

  3. 添加構建步驟,此處執行dotnet的編譯命令:

  

  4. 執行任務,結果輸出以下:

  

實現自動測試

  1. 添加測試運行步驟:

  

  dotnet測試命令參考:https://docs.microsoft.com/en-us/dotnet/core/tools/dotnet-test?tabs=netcore21
  運行結果:

  

  2. 收集代碼覆蓋率:
  以前介紹了使用OpenCover來分析.net core的單元測試代碼覆蓋率,而後再經過ReportGenerator來生成Html格式的報告,因此首先須要添加代碼覆蓋率分析以及報告生成的構建步驟:

  

  OpenCover.Console.exe -target:"dotnet.exe" -targetargs:"test XUnitTestProject/XUnitTestProject.csproj" -output:coverage.xml -filter:"+[*]* -[*Moq]* -[xunit*]*" -oldstyle
  ReportGenerator.exe "-reports:coverage.xml" "-targetdir:report"
  注:在持續集成工具中使用OpenCover可能會沒法生成代碼覆蓋信息,因此須要對OpenCover.Profiler.dll文件進行註冊,註冊代碼以下:

  

  OpenCover.Profiler.dll文件位於OpenCover的安裝目錄下,更多詳情查考OpenCover安裝目錄下的Usage.rtf文檔。

  若是要將生成的Html在Jenkins上顯示,那麼必須添加一個HTML Publisher的插件:

  

  而後在構建後操做中添加HTML發佈操做:

  

  須要填寫HTML的目錄和報告起始頁面。
  完成後保存配置,並執行構建:

  

  

  

  而後在工程面板中便可查看代碼覆蓋報告:

  

  報告:

  

實現自動部署

  當完成編譯工做後,須要把編譯的結果發佈出來,對於一個Windows的控制檯應用程序來講,實際上把編輯的執行程序以及相關程序集發佈出來便可,而這個程序文件其實是在項目的bin目錄下。
在Jenkins中能夠經過Artifact Deployer Plug-in這個插件來完成文件發佈功能:

  

  插件安裝完成後,在項目的構建後操做中添加部署操做,將生成的文件複製到D:\test目錄下:

  

  執行構建後將自動把構建結果發佈至D:\test目錄下。

  

小結

  本文簡單的介紹瞭如何使用Jenkins及相關插件完成.Net Core程序的自動編譯、測試和發佈功能。不管是前面文章提到的使用各類託管工具仍是本身搭建Jenkins其核心步驟都是經過相應工具以執行命令的方式完成的(編譯命令、測試命令、代碼覆蓋率命令、報表生成命令等)。

  雖然都是經過相同的工具以及相同的命令,可是不一樣的CI工具使用上仍是存在一些區別,而且還存在大量的手動配置,有沒有一種方法來簡化而且重用CI/CD流程呢?敬請期待後續內容(*^_^*)

本文連接:http://www.javashuo.com/article/p-zsfqeqek-cq.html

 好代碼是管出來的——淺談.Net Core的代碼管理方法與落地(更新中...)

相關文章
相關標籤/搜索