前面我们讲解了关于Jenkins的一些基本知识,通过这些知识我们可以结合一些其它工具实现更为复杂的任务,本篇我们将介绍如何使用msbuild工具结合Jenkins实现构建一个.net控制台框.
首先我们打开visual studio创建一个控制台程序,叫作ConsoleBuildTest,如下图示
此时,打开windows cmd输入msbuild,如果会出现如下类似界面
则cmd可以正确找到cmd命令.如果报错,则将以下路径添加到环境变量的path里:
Microsoft.NET\Framework\v4.0.30319
这时候再在cmd里输入msbuild看看能否找到msbuild,如果仍然不行,则你需要显式地指定msbuild.exe所在位置.
如果msbuild命令可以正常工具,我们则打开jenkins创建一个名为ConsoleBuildTest的freestyle项目
Add Build step里选择execute windows batch command,在弹出的命令框里输入命令
其中引号里面的为要构建的项目的路径,读者创建项目所在的目录可能和我的不一样,只需要指定该项目的sln或者csproj文件即可.
这里我并没有直接使用msbuild命令,而是显式的指定msbuild文件所在的路径,这是因为我的系统装了mono,总是导致msbuild无法正确找到csc.exe文件位置,因此显式指定.当然如果小伙伴们没有装vs 2017或者版本跟我的不一样,则不能在相同的路径下找到msbuild.exe,如果你不知道msbuild.exe在什么位置,推荐你搜索everything然后下载everything,在everything里输入msbuild.exe,则everything会列出所有msbuild,.exe所在的位置
创建完成任务,我们点击build now按钮,如果配置没有错误,则生成一条构建记录.
点击构建记录进入详情页,然后点击console output,你将会看到如下图示控制台输入内容
此时你打开项目目录下的bin/debug目录将会看到已经构建好的内容.
点击consoleTest.exe,将会出现以下窗口
可以看到控制台程序正常运行并输入helloworld.
这时候如果你手动按下了f5或者在visual studio里点击了生成,你就会纳闷,这项目是Jenkins生成的呢还是visual studio生成的呢,为了消除疑惑,我们更改msbuild参数指定生成目录(默认生成在bind\debug目录下)
我们点击左侧的configure进入项目编辑模式,我们把命令内容更改为如下
和上一次的不同之所在于我们指定了outdir为bin\mydebug(不需要手动创建mydebug目录,msbuild生成的时候如果不存在会自动创建)
我们再次点击Save保存项目.然后再次点击Build Now.
如果没有错误,则会有一个成功的生成记录.打开项目下的bin目录你将会看到一个MyDebug目录
注意这里的第一个坑,虽然上面的代码比较乱,但是也不要使用回车来分行让它显得更整洁,否则生成时可能报错.
从前面的不指定构建目录默认生成在debug目录下可以看到,如果不指定生成模式,则默认生成debug项目,但是正式环境我们是要生成realease的,如何指定realease模式呢,
继续修改项目,把配置设成如下
如果生成成功,则会有一条成功记录,console output如下
打开目录下的bin目录,你会看到多了一个MyRealese文件夹,正是我们刚才指定的