我在Windows上安装了MSBuild Plugin v1.27的Jenkins v2.60.3。
我已在Jenkins的全局工具配置中配置了msbuild.exe
的路径。我还在Jenkins中设置了一个Multi Branch Pipeline,成功从git repo中获取Jenkinsfile
。
我的问题是:如何在我的Jenkinsfile
中调用MSBuild插件?
请注意我知道我可以直接调用msbuild.exe
作为Windows批处理步骤但我更喜欢在可能的情况下浏览MSBuild插件。
`
答案 0 :(得分:11)
管道似乎还不支持MSBuild https://github.com/jenkinsci/pipeline-plugin/blob/master/COMPATIBILITY.md
您可以在此期间尝试此操作。 https://github.com/jenkinsci/pipeline-examples/blob/master/jenkinsfile-examples/msbuild/Jenkinsfile
答案 1 :(得分:2)
我们的团队需要迁移在UI中创建的大量自由式MSBuild作业。 mjd的回答有所帮助,但仍然让我挠头。这些示例只是行不通...直到我找出断开连接的地方。
这是秘诀:
您必须使用以下命令直接调用“命名为msbuild的配置” “蝙蝠” 和“工具” 命令。
1)进入使用MSBuild插件的自由式作业之一的配置
2)向下滚动到msbuild部分,然后单击“ MSBuild版本”下拉菜单,记下列出的 exact 名称。这是您的“命名的msbuild配置”。选择一个将在下一步中使用的名称。
3)打开您的jenkinsfile ,找到您要调用msbuild的阶段和步骤,然后添加此行并替换' MSBuild 15.0 ”,您在步骤2中选择的名称:
bat“ \” $ {tool'MSBuild 15.0'} \ msbuild \“ SolutionName.sln / p:Configuration =发布/ p:Platform = \”任何CPU \“ /p:ProductVersion=1.0.0。$ { env.BUILD_NUMBER}”
像这样...
(对于声明性管道,您需要将其放在“脚本”块中。如果您不知道什么是“声明性管道”,则它是编写管道脚本的两种样式之一在詹金斯(Jenkins)中使用“常规”语言。有关更多信息,here is a comparison of the scripted vs declarative styles。)
4)运行管道并检查输出-您在第三步中添加的代码不会生成任何内容,您只想使用它来查看是否在投资之前先真正调用了msbuild时间到我的剧本。
(我通常使用 Replay (重播)按钮,该按钮允许我在Jenkins中在线编辑脚本,而不是编辑,提交和推送到远程仓库...它只是节省了一点时间调试。)
5)检查在步骤4中运行的管道作业的输出。您应该看到类似下面的内容,表明已调用正确版本的MSBuild。如果没有,则您可能有错字或管理员需要干预。
workspace \ Pipeline_Test>“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ msbuild“ SolutionName.sln / p:配置=发布/ p:平台=“任何CPU” /p:ProductVersion=1.0.0.308 Microsoft(R)Build Engine版本 .NET Framework的15.9.21 + g9802d43bc3版权所有(C)Microsoft Corporation。保留所有权利。
6)恭喜,您现在可以配置构建了!用构建文件替换SolutionName.sln并将正确的参数传递给它。
答案 2 :(得分:0)
令我惊讶的是,所有解决方案都不适合我。
平台:Window 10 Jenkins的最新版本于2020-11-05。
我不确定窗口和其他操作系统是否会导致管道脚本引擎的行为有所不同。
下面是可能遇到的问题,最后将解决方案与上述解决方案结合起来。
所以这是在Windows平台的詹金的管道脚本中添加MSbuild的可行解决方案
bat'“ C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Current \ Bin \ msbuild” YourSolution.sln / p:Configuration = Release / p:Platform =“ Any CPU” / p:ProductVersion = 1.0.0。$ {env.BUILD_NUMBER}'