在Jenkins(Jenkins 2.6)中设置Pipeline构建,复制基于git的构建的示例脚本给出:“没有找到名为MSBuild的工具”。我在Manage Jenkins -> Global Tool Configuration
中设置了MSBuild工具。我在从节点上运行管道。
在Slave配置中,我在Node Properties -> Tool Locations
中设置了MSBuild工具路径。
在构建过程中,它无法获得MSBuild工具路径,如果我在没有管道的情况下运行相同的源(不使用Jenkinsfile),它可以正常工作。
请参阅Jenkinsfile语法
pipeline {
agent { label 'win-slave-node' }
stages {
stage('build') {
steps {
bat "\"${tool 'MSBuild'}\" SimpleWindowsProject.sln /t:Rebuild /p:Configuration=Release"
}
}
}
}
我还尝试更改windows slave的环境变量,不刷新。
注意:我已经在从属节点上安装了MS Build工具
答案 0 :(得分:11)
在Declarative Pipeline语法中,MSBuild的工具有点笨拙。以下是我使用import { FETCH_RECIPES } from "../actions/index";
export default function(state = [], action) {
switch(action.type) {
case FETCH_RECIPES:
// Verify here that your request object has data
return [...state, action.request.data];
// Default state
default:
return state;
}
}
块处理它的方式:
script
在较旧的Scripted Pipeline语法中,它可能是这样的:
pipeline {
agent {
label 'win-slave-node'
}
stages {
stage('Build') {
steps {
script {
def msbuild = tool name: 'MSBuild', type: 'hudson.plugins.msbuild.MsBuildInstallation'
bat "${msbuild} SimpleWindowsProject.sln"
}
}
}
}
}
答案 1 :(得分:4)
对于任何有此问题并且只是想弄清楚“工具”在Jenkins中代表什么以及它在何处配置的人,请参见以下屏幕截图:
在这里您可以看到用来引用MSBuild的工具名称(或添加一个):
然后您可以像这样引用它:bat "\"${tool '15.0'}\" solution.sln /p:Configuration=Release /p:Platform=\"x86\"
(示例不是声明性语法,但应显示出主意)
答案 2 :(得分:2)
虽然提供的答案肯定有效,但您只需提供正确的完整工具名称。
在我们的安装中,我们有三种不同的MSBuild版本,我可以使用以下
${tool 'MSBuild 15.0 [32bit]'}
答案 3 :(得分:0)
You have to define MSBuild in Jenkins => Manage Jenkins => Global Tool Configuration or use a different toolname which is already defined.
${tool 'toolname'} returns the path defined for a tool in Global Tool Configuration.
Warning: Pay attention to the path defined. Does it point to a folder or to msbuild.exe? You might have to append msbuild.exe:
${tool 'VS2017'}\msbuild.exe
答案 4 :(得分:0)
我们必须定义msbuild
,该脚本安装在脚本块中的“全局工具配置”中
stage('App_Build'){
steps{
tool name: 'MsBuild', type: 'msbuild'
bat "\"${tool 'MsBuild'}\"My.Service.sln /t:Rebuild /p:Configuration=Release"
}
}
这将起作用