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

19
我有一个安装了MSBuild Plugin v1.27的Jenkins v2.60.3,运行在Windows上。
我已经在Jenkins的全局工具配置中配置了msbuild.exe的路径。我还在Jenkins中设置了一个多分支流水线,可以成功地从git仓库中获取Jenkinsfile
我的问题是:如何在Jenkinsfile中调用MSBuild插件作为一个步骤?
请注意,我知道我可以直接将msbuild.exe作为Windows批处理步骤调用,但如果可能的话,我更喜欢通过MSBuild插件进行操作。

12k的浏览量,但还没有好的答案。你试过这个吗?https://jenkinsci.github.io/job-dsl-plugin/#method/javaposse.jobdsl.dsl.helpers.step.StepContext.msBuild ... 我也似乎无法让它工作。有人成功了吗? - neoscribe
3个回答

13

1
请求管道支持已被记录为JENKINS-26948 - Roman
https://github.com/jenkinsci/msbuild-plugin/pull/36 - XoXo

6
我们的团队需要迁移UI中创建的大量自由风格MSBuild作业。mjd的回答有所帮助,但仍让我感到困惑。这些示例就是不起作用... 直到我找出了问题所在。
这是秘密酱汁:
引用: 你必须直接使用“bat”和“tool”命令调用“命名msbuild配置”。
  1. 进入使用MSBuild插件的自由风格任务的配置页面

  2. 向下滚动到msbuild部分,点击“MSBuild版本”下拉菜单,注意列出的确切名称。这是您的“命名MSBuild配置”。选择一个名称作为下一步要使用的名称。 enter image description here

  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}"

像这样...

enter image description here

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

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

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

enter image description here

5. 检查在步骤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 Microsoft (R) Build Engine version 15.9.21+g9802d43bc3 for .NET Framework Copyright (C) Microsoft Corporation. All rights reserved.

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

完美运行,谢谢。在提供的代码片段中,必须转义反斜杠才能正常工作:bat "\"${tool 'MSBuild 15.0'}\\msbuild\" SolutionName.sln /p:Configuration=Release /p:Platform=\"Any CPU\" /p:ProductVersion=1.0.0.${env.BUILD_NUMBER}" - pablo.bueti
1
修复了反斜杠的问题。原来是把双反斜杠当作转义的反斜杠,所以只显示了一个... 我必须要四个反斜杠才能显示正确的代码。发现得好,谢谢。 - neoscribe

0

我很惊讶所有的解决方案都对我无效。

平台:Window 10,Jenkins在2020-11-05最新版本。

我不确定是否有任何原因会导致窗口和其他操作系统使管道脚本引擎表现不同。

以下是可能遇到的问题和最终与上述解决方案相结合的解决方案。

  1. 在我的编译器中,单个''会导致错误,''必须通过替换为'\'进行转义。这类似于其他字符,如'"'
  2. ${tool 'MSBuild'} OR ${tool 'MSBuild 15.0'}\msbuild\无法工作,错误是路径不能指定或找不到bat程序。它必须是实际msbuild.exe的绝对路径

因此,这是在window平台的jenkin中向管道脚本添加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}'


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接