如何在Jenkinsfile中使用Jenkins MSBuild插件?

uri*_*rig 11 msbuild jenkins jenkins-pipeline

我在Windows上安装了MSBuild插件 v1.27的Jenkins v2.60.3 .

我已经msbuild.exe在Jenkins的全局工具配置中配置了我的路径.我还在Jenkins中设置了一个Multi Branch Pipeline,Jenkinsfile成功地从git repo 中获取了一个.

我的问题是:如何调用MSBuild插件作为我的一步Jenkinsfile

请注意我知道我可以msbuild.exe直接调用Windows批处理步骤,但如果可能的话,我更喜欢通过MSBuild插件.`

neo*_*ibe 7

我们的团队需要迁移在 UI 中创建的大量自由式 MSBuild 作业。mjd 的回答很有帮助,但仍然让我摸不着头脑。这些例子根本不起作用......直到我弄清楚其中的脱节。

这是秘密酱汁:

您必须使用 “bat”“tool”命令直接调用“命名的msbuild配置”。

  1. 进入使用 MSBuild 插件的自由式作业之一的配置

  2. 向下滚动到 msbuild 部分,然后单击“MSBuild Version”下拉列表,记下列出的确切名称。这是您的“命名的 msbuild 配置”。选择您将在下一步中使用的名称。 在此输入图像描述

  3. 打开 jenkinsfile,找到要调用 msbuild 的阶段和步骤,然后添加此行并将“ MSBuild 15.0 ”替换为您在步骤 2 中选择的名称:

bat ""${tool 'MSBuild 15.0'}\\msbuild" SolutionName.sln /p:Configuration=Release /p:Platform="Any CPU" /p:ProductVersion=1.0.0.${env.BUILD_NUMBER}"

像这样...

在此输入图像描述

(对于声明式管道,您需要将其放在“脚本”块内。如果您不知道“声明式管道”是什么,它是 Jenkins 中使用“groovy”编写管道脚本的两种风格之一“语言。有关更多信息,请参阅脚本式与声明式样式的比较。)

  1. 运行管道并检查输出- 您在第三步中添加的代码不会构建任何内容,您只想使用它来查看 msbuild 在投入更多时间到我的脚本之前是否会真正被调用。

(我通常使用“重播”按钮,它允许我在 Jenkins 中在线编辑脚本,而不是编辑、提交和推送到远程存储库……它只是节省了一些调试时间。)

在此输入图像描述

  1. 检查您在步骤 4 中运行的管道作业的输出。您应该看到如下所示的内容,表明调用了正确的 MSBuild 版本。如果没有,则可能是您输入错误,或者您的管理员需要干预。

workspace\Pipeline_Test>"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild" SolutionName.sln /p:Configuration=Release /p:Platform="Any CPU" /p :ProductVersion=1.0.0.308 适用于 .NET Framework 的 Microsoft (R) Build Engine 版本 15.9.21+g9802d43bc3 版权所有 (C) Microsoft Corporation。版权所有。

  1. 恭喜您现在可以配置您的构建了!将 SolutionName.sln 替换为您的构建文件并将正确的参数传递给它。