Jenkins持续集成学习-Windows环境进行.Net开发3

Jenkins持续集成学习-Windows环境进行.Net开发3 目录

Jenkins持续集成学习-Windows环境进行.Net开发1
Jenkins持续集成学习-Windows环境进行.Net开发2
Jenkins持续集成学习-Windows环境进行.Net开发3

前言

在前面两篇文章介绍了关于持续集成的完整主流程。

30.png

目标

在上一篇文章中我们完成了主流程的持续集成,但是提交代码仍然需要手动点击构建,本篇文章就来探究如何做到SVN代码提交后自动构建。

优化nuget包生成流程

在开始之前我需要解决上一篇文章理解有误的一个问题。
在上一章我们将单元测试的不稳定错误等级设置为1。

2.27.PNG

当我添加多个失败的单元测试时,我发现1次单元测试失败错误等级就会加1,我增加了一共11个失败的单元测试,因此单元测试失败返回值为11。

4.PNG


因此上次的逻辑就行不通了,编译的时候自动创建nuget包,不稳定版本删除nuget包,这样只能将错误等级设置的非常大。比如int.Max,否则失败会导致删除脚本不执行。
因此我们有两种选择:

1. 编译的时候自动创建nuget包, 单元测试将不稳定的ERRORLEVEL设置的非常大,单元测试失败都可以认为是不稳定,然后自动删除nuget包。 2. 编译的时候不自动创建nuget包,单元测试通过后再调用脚本创建nuget包。

我们优化一下使用第二种方法生成nuget包。

我们将项目中自动生成nuget包的勾去除

3.PNG

或者我们修改csproj的GeneratePackageOnBuild节点值,改为false,则编译的时候也不会自动创建nuget包。

5.PNG

然后我们修改单元测试ERRORLEVEL,单元测试失败了就不再执行后续Build的流程,在单元测试成功时创建Nuget包。

6.png

通过nuget pack csproj文件名 -Properties Configuration=Release -OutputDirectory 输出文件夹命令创建nuget包

需要加-Properties Configuration=Release参数。使用pack创建包的时候会先进行编译,若没有指定Release在默认会生成Debug版本
需要添加-OutputDirectory XXXX参数,否则默认会保存到项目的根目录。
同时我们删除了ERRORLEVEL,只要单元测试失败都算失败,这样就不会执行报创建了。

17:53:29 Results (nunit3) saved as TestResult.xml 17:53:29 17:53:29 D:\Program Files (x86)\Jenkins\workspace\unittest>exit 0 17:53:29 [unittest] $ cmd /c call C:\WINDOWS\TEMP\jenkins3052083372263337733.bat 17:53:29 17:53:29 D:\Program Files (x86)\Jenkins\workspace\unittest>E:\开发工具\VS开发工具\VS插件\nuget.exe pack Jenkins.Core/Jenkins.Core.csproj -Properties Configuration=Release -OutputDirectory Jenkins.Core\bin\Release 17:53:29 正在尝试从“Jenkins.Core.csproj”生成程序包。 17:53:29 MSBuild auto-detection: using msbuild version '15.9.21.664' from 'D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\bin'. 17:53:31 正在打包“D:\Program Files (x86)\Jenkins\workspace\unittest\Jenkins.Core\bin\Release\net45”中的文件。 17:53:31 警告: NU5115: 未指定 Description。正在使用“Description”。 17:53:31 Successfully created package 'D:\Program Files (x86)\Jenkins\workspace\unittest\Jenkins.Core\bin\Release\Jenkins.Core.0.5.0.nupkg'. 17:53:32 17:53:32 D:\Program Files (x86)\Jenkins\workspace\unittest>exit 0 17:53:33 Recording NUnit tests results 17:53:33 Starting Publish Nuget packages publication 17:53:33 [unittest] $ E:\开发工具\VS开发工具\VS插件\NuGet.exe push Jenkins.Core\bin\Release\Jenkins.Core.0.5.0.nupkg ******** -Source :10080/nuget -NonInteractive 17:53:33 Pushing Jenkins.Core.0.5.0.nupkg to 'http://127.0.0.1:10080/nuget'... 17:53:34 PUT :10080/nuget/ 17:53:35 Created :10080/nuget/ 981ms 17:53:35 Your package was pushed. 17:53:35 Ended Publish Nuget packages publication 17:53:35 [WS-CLEANUP] Deleting project workspace... 17:53:35 [WS-CLEANUP] Skipped based on build state SUCCESS 17:53:35 Finished: SUCCESS

此时流程优化如下

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zygypw.html