我正在设置一个新的jenkins实例(版本2.138.1)。对于我们的.NET项目,我想使用MSBuild插件并使用预先配置的MSBuild安装进行构建。
要使SonarQube分析正常工作,我必须仅提供MSBuild的解决方案文件名(无路径)。当我这样做时,有时MSBuild找不到解决方案文件,并失败 MSBUILD:错误MSB1009:项目文件不存在。
我们具有几乎相同的不同作业配置(只是不同的解决方案文件)。对于我们的大多数工作,我们必须从SVN中检出多个存储库。现在,某些作业失败并显示此消息,并且某些作业正常运行。
现在在我看到的日志中,MSBuild.exe是从失败作业上的工作区目录开始的,但是是从后续作业上的解决方案目录开始的。没有可以设置此启动目录的参数。
我发现,当要检出的第一个SVN模块(在作业配置中)是带有SLN文件的模块时,则在解决方案目录中启动MSBuild。在所有其他情况下,它都从“ / workspace”开始。
所以简短的故事是:
Jenkins Job with multiple SVN modules:
http://xxx/trunk/module1@HEAD (Local module directory = .\module1)
http://xxx/trunk/module2@HEAD (Local module directory = .\module2)
http://xxx/trunk/moduleWithSolution@HEAD (Local module directory = .\moduleWithSolution)
MSBuild configuration:
MSBuild Build File: MySolution.sln
->构建失败日志显示,msbuild.exe从*** \ workspace开始
当我将配置更改为:
Jenkins Job with multiple SVN modules:
http://xxx/trunk/moduleWithSolution@HEAD (Local module directory = .\moduleWithSolution)
http://xxx/trunk/module1@HEAD (Local module directory = .\module1)
http://xxx/trunk/module2@HEAD (Local module directory = .\module2)
MSBuild configuration:
MSBuild Build File: MySolution.sln
->构建成功-日志显示,msbuild.exe从*** \ workspace \ moduleWithSolution开始
实际的问题是:这真的按设计工作吗? (因为我不这么认为)