如何与Jenkins集成.NET项目
Posted 京鸿智武
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何与Jenkins集成.NET项目相关的知识,希望对你有一定的参考价值。
大家好,在这篇文章中,我将解释如何整合Jenkins,TFS,NUnit,OpenCover,Cobertura,CatLight,JIRA和Slack。我试图准备这篇文章来涵盖所有的细节,我希望这将有助于你持续的整合过程。
工具带
我们将使用下面的工具来分开目的。
詹金斯 - 这是我们的CI服务器。编配将与詹金斯完成。
NUnit - 这是我们的测试运行器框架。我们使用NUnit编写了测试。
OpenCover - 这是我们的测试覆盖工具,它是开源的。
ReportGenerator - 它使用.xml文件生成html报告。
OpenCoverToCoberturaConverter - 它将OpenCover结果转换为Cobertura格式。它创造更多花哨和时尚的报告。您需要构建它并生成一个可执行文件。我生成了一个,你可以在这里下载(版本2.0.4)。
CatLight - 这是一个桌面版本通知器,位于系统托盘。
JIRA - 这是我们的问题跟踪和敏捷管理工具。
松弛 - 这是我们的内部消息应用程序。
詹金斯CI流程
构建行为
· 触发Jenkins并开始运行Jenkins Job。
· 连接TFS并将项目拖放到位于CI服务器上的本地文件夹中。然后,使用MSBuild构建最新版本。
· 开始运行NUnit单元测试并使用OpenCover执行代码覆盖。
· 将OpenCover结果转换为Cobertura覆盖结果。
构建后行动
· 发布Cobertura HTML覆盖率报告
· 发布OpenCover HTML报告
· 发布NUnit测试结果
· 更新相关的JIRA问题
· 创建JIRA问题如果构建失败。
· 如果詹金斯的工作不成功,发一封电子邮件。
· 发送建立通知到相关的Slack频道。
· 如果一切顺利,我们将通过Octopus Deploy部署到测试环境。(这是另一篇文章的话题。)
· 运行自动硒测试。(这是另一篇文章的话题。)
一步一步解释
1)在服务器上安装Jenkins
从https://jenkins.io/ 安装最新版本的Jenkins。我们使用Windows Server 2012,所以我安装了Windows版本。你可以在这里找到说明。
2)安装插件
为Jenkins 安装下面的插件。
· Team Foundation Server插件
· MSBuild插件
· NUnit插件
· HTML发布者插件
· Cobertura插件
· JIRA插件
· 闲置通知插件
如何安装Jenkins插件?
打开Jenkins然后去“ 管理Jenkins ” - >“ 管理插件 ”
然后,单击“ 可用 ”选项卡,然后将所需的插件名称写入搜索框。之后,相关的插件将出现。选择插件,然后单击安装按钮。这样,你可以安装所有的Jenkins插件。
3)创建一个新的工作/项目
创建一个新的Jenkins作业。
创建“ 新建项目 ”图标并为您的工作命名。
点击“ 自由式项目 ”
点击“ 确定 ”按钮。
源代码管理
4)与TFS集成
进行源代码管理的设置。在这篇文章中,我会告诉你连接到TFS。如果你使用Git,请查阅这篇文章,了解如何连接Jenkins和Git。
在源代码管理部分,请点击“TFS”单选按钮,填写如下图所示的字段。
我想在C: JenkinsProjects文件夹中建立项目。
构建触发器
5)设置生成触发器或手动触发它
如果你想要的话可以设置一个Build Trigger,或者你可以手动触发它。我现在留空,并手动触发构建。
建立
6)Nuget配置
如果你使用Nuget包,你需要在构建操作之前得到它们。首先,从这里安装Nuget ,并将Nuget.exe放在C: Nuget文件夹下。
我们在我们的项目中使用自定义的Nuget包,因此我运行一个批处理命令,如下所示。
C: Nuget nuget.exe恢复“C: JenkinsProjects KariyerNet.ECommerce.sln”-ConfigFile C: Nuget nuget.config
在上面的命令中,我使用nuget.config文件并在其中声明了两个键。每个键代表Nuget饲料。其中一个是官方软件包,另一个是本地Nuget软件包。如果你不使用本地的Nuget包,那么你可以删除第二个“添加密钥”行。我把这个配置文件放在“ C: Nuget ”文件夹下面,在其中我做了Nuget配置,如下所示。您可以根据您的项目设置修改此配置文件。
Nuget.config
XHTML
1 2 3 4 5 6 7 8 9 10 11 12 |
<?xml version="1.0" encoding="utf-8"?> <configuration> <packageSources> <add key="NuGet official package source" value="https://nuget.org/api/v2/" /> <add key="LocalNuGetFeed" value="\yourserveradressYourLocalNugetPackagesFolder" /> </packageSources> <disabledPackageSources> </disabledPackageSources> <activePackageSource> <add key="All" value="(Aggregate source)" /> </activePackageSource> </configuration> |
7)MSBuild设置
我们正在使用Visual Studio 2015和.NET 4.5.2版本,因此需要从这里安装“ Microsoft Build Tools 2015 ” 。
安装后,进入“ 管理詹金斯 ” - >“ 全局工具配置 ”,在MSBuild部分设置你的MSBuild路径如下。
在最后一步,您需要添加“使用MSBuild构建Visual Studio项目或解决方案”步骤,并将您的解决方案文件设置为“ MSBuild构建文件 ”。
此外,从开发机器复制“ C: Program Files文件(x86) MSBuild Microsoft VisualStudio ”文件夹的所有内容,然后粘贴到您的Jenkins服务器的相同路径。
8)单元测试和测试覆盖设置
在“ C: Tools ”文件夹下下载并解压OpenCover。
另外,在“ C: Tools Cobertura ” 下生成最新的OpenCovertoCoberturaConverter.exe。
我在这里生成0.2.4版本。
安装最新版本的NUnit。
最后,添加一个“ 执行Windows批处理命令 ”步骤并根据您的项目编写如下命令。对于targettargs,请设置您的单元测试的dll文件。
注意:使用最新的NUnit Jenkins插件发布Nunit 3测试结果是有问题的。因此,我通过在下面的脚本中添加“format = nunit2”将NUnit 3格式改为NUnit 2格式。
在脚本下面,自动运行所有单元测试,并在工作区下创建TestResults.xml文件,同时运行测试覆盖率,并在工作区文件夹下创建Coverage.xml。
脚本:
“C: Tools opencover OpenCover.Console.exe”-register:user -target:“C: Program Files(x86) NUnit.org nunit-console nunit3-console.exe”-targetargs:“C : JenkinsProjects {您的项目路径} bin Debug KariyerNet.Business.ECommerce.UnitTests.dll -result = TestResult.xml; format = nunit2“-filter:+
* *输出:Coverage.xml
9)OpenCover HTML报告生成
下载中心ReportGenerator并提取其在“C:工具”文件夹中。
然后添加“ 执行Windows批处理命令 ”,并使用Coverage.xml生成HTML报告
脚本:
“C: Tools ReportGenerator bin ReportGenerator.exe”-reports:Coverage.xml -targetDir:CodeCoverageHTML
10)OpenCover到Cobertura转换
从这里生成OpenCoverToCoberturaConverter.exe 或从这里下载生成的exe (版本0.2.4)。
将该exe文件放在C: Tools Cobertura文件夹下。
然后添加一个“ 执行Windows批处理命令 ” 并将OpenCover Coverage.xml文件转换为工作空间文件夹下的Cobertura.xml文件。
脚本:
“C: Tools Cobertura OpenCoverToCoberturaConverter.exe”-input:Coverage.xml -output:Cobertura.xml -sources:%WORKSPACE%
然后,添加一个“ 执行Windows批处理命令 ”将Cobertura.xml文件复制到您的本地工作目录路径下。在这个例子中,我的本地工作目录是“ C: JenkinsProjects ”,我想用这个脚本把Cobertura.xml放 在“ KariyerNet.ECommerce ”文件夹下。
脚本:
cp“C: Program Files(x86) Jenkins jobs ECommerce workspace Cobertura.xml”“C: JenkinsProjects KariyerNet.ECommerce”
构建后行动
11)发布Cobertura覆盖报告
点击“ 添加后生成操作 ”按钮,然后点击“ 发布Cobertura覆盖报告 ”
然后,写下你的Cobertura.xml文件路径,如下所示。
12)发布OpenCover覆盖报告
点击“ 添加后生成动作 ”按钮,然后点击“ 发布HTML报告 ”
并做下面的设置。
13)发布NUnit测试结果报告
点击“ 添加后生成动作 ”按钮,然后点击“ 发布NUnit测试结果报告 ”
然后,执行下面的设置。
14)更新相关的JIRA问题并创建JIRA问题
在JIRA Post Build之前,我们应该首先设置JIRA设置。为此,请转到“管理Jenkins” - >“配置系统”
然后,填写Jenkins位置如下。
然后,填写JIRA设置如下并验证它们。当你看到“成功”完成。
点击“ 添加后生成动作 ”按钮,然后点击“ 更新相关的JIRA问题 ”
点击“ 添加后生成动作 ”按钮,然后点击“ 创建JIRA问题 ”
之后,您可以使用JIRA项目设置填写JIRA后期构建操作。
15)JIRA集成设置
首先,去Jenkins安装“ Jenkins Plugin for JIRA ”
然后,转至管理 - > 应用程序 - > Jenkins配置
然后,添加一个新的网站与您的詹金斯设置。
如果在添加站点时没有选择,请选择自动启用作业。
然后,您可以在JIRA的Jenkins上看到您的工作。
16)电子邮件通知
首先,我们需要配置电子邮件服务器设置。转到“ 管理Jenkins ” - >“ 配置系统 ”并配置电子邮件服务器设置,如下所示。我做了我们的电子邮件服务器。
然后,点击“ 添加后生成动作 ”按钮,然后点击“ 电子邮件通知 ”
最后,根据您的需要设置您的电子邮件通知设置。
17)闲置通知
登录你的Slack帐户,在appdirectory搜索栏中输入Jenkins,然后搜索“ Jenkins CI ”,然后你需要按照Jenkins CI和Slack集成的说明操作。
安装Slack Notifier插件后,点击左侧导航栏中的Manage Jenkins,然后进入配置系统。找到全局松弛通告设置部分并添加以下值:
· 团队领域: “您的团队领域”
· 集成令牌: “您的集成令牌”
其他字段是可选的。单击栏位旁边的问号图标查看帮助文本以获取更多信息。完成后按保存按钮。
然后,添加“ Slack Notifications ”后建立行动,并设置您的需求复选框。
18)CatLight桌面通知器
转到https://catlight.io/,下载CatLight for windows并安装它。
安装完毕后,点击“ Jenkins ”
之后,配置下面的设置。
之后,选择相关的Jenkins作业。
然后你可以看到最新的运行和catlight通知。
19)运行詹金斯工作
在执行作业之前,请注意检查Jenkins服务并查看用户信息。Jenkins服务应该以您登录到服务器的用户身份启动。
完成所有步骤之后,就可以运行我们的Jenkins作业了。
当作业正在运行时,您可以在左侧窗格中看到状态。
在作业运行时,您可以看到日志。
运行CatLight的测试变为透明。
你可以看到那个工作正在运行。
作业完成后,您可以看到CatLight的颜色为红色/绿色/黄色。
工作完成后,您可以看到Jenkins仪表板上的所有结果。
Cobertura结果
OpenCover结果
近期变动
测试结果
JIRA活动图
JIRA CI-建立
JIRA评论
闲置通知
目前为止就这样了。
点“阅读原文”了解更多
以上是关于如何与Jenkins集成.NET项目的主要内容,如果未能解决你的问题,请参考以下文章
DevOps-2:持续集成工具Jenkins构建.Net项目