首先这不是一篇手把手教学,只记录搭建过程中的问题汇总。
windows上安装jenkins是以服务的方式跑的。如果是解压版的,下文nuget那里可能处理方式不同。
主要区别是服务是以 Local System 用户跑的,AppData文件夹不一样
- Msbuild下载就在vs2019下载页面那里,https://visualstudio.microsoft.com/zh-hans/downloads/ 下面的 Visual Studio 2019 工具 / Visual Studio 2019 生成工具
和vs2019安装方式基本差不多,可选各种模块。nuget下载地址好找,就一个exe - 上面两个路径都要添加到 环境变量 Path 里
msbuild我的默认路径是 C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin 可以参考一下,反正就是文件夹里有Msbuild.exe的路径
nuget直接放msbulid同目录也可以,比较省事,Path里添加一个路径就行了
这个改动需要重启Jeikins服务生效 - 我的msbuild命令行给大家参考,用的jenkins里的msbuild插件
nuget restore
msbuild -t:restore -p:Configuration=$env:Configuration -p:Platform="Any CPU" -v:minimal -p:WarningLevel=0 -t:Project0:Rebuild "./Solution.sln"
msbuild -t:restore -p:Configuration=$env:Configuration -p:Platform="Any CPU" -v:minimal -p:WarningLevel=1 -t:Folder\Project1:Rebuild "./Solution.sln"
因为我的sln文件里包括好多项目,但是我只想编译其中的两个,
主要讲两点,1是jenkins变量的使用,2是vs项目文件夹的问题
$env:Configuration 是jenkins项目配置里添加的参数,构建之前通过改参数就可以切换目标
powershell里使用 $env:名称 的方式使用
vs的解决方案项目文件夹不等于实际的目录结构,Project1 和Project0 可能实际在一个目录,命令行里要以在vs的 解决方案浏览器 里的组织结构为准。
-
构建的时候遇到 error CS0006
参考 https://stackoverflow.com/questions/48896486/jenkins-not-restoring-nuget-packages-with-new-msbuild-restore-target
方案1设置个全局变量 NUGET_PACKAGES
方案2拷贝Nuget.config文件,确保以下两个位置都有nuget.config
C:\Windows\system32\config\systemprofile\AppData\Roaming\NuGet\NuGet.config
C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming\NuGet\NuGet.config
我这面方案1添加全局变量有效,需要重启jenkins服务。 -
jenkins主题,http://afonsof.com/jenkins-material-theme/ 我做了一点修改,下载的css文件,搜索’#main-panel‘把字体改了一下,对应于控制台输出窗口的字体。
#main-panel>pre {
font-family: Consolas !important
}
#main-panel>pre>* {
font-family: Consolas !important
}