Jenkins(Jenkins 2.6)でパイプラインビルドを設定し、gitベースのビルドのサンプルスクリプトをコピーすると、「MSBuildという名前のツールが見つかりません」と表示されます。 MSBuildツールをManage Jenkins -> Global Tool Configuration
に設定しました。スレーブノードでパイプラインを実行しています。
スレーブ構成で、MSBuildツールパスをNode Properties -> Tool Locations
に設定しました。
ビルドプロセス中にMSBuildツールパスを取得できませんが、パイプラインなしで(Jenkinsfileを使用せずに)同じソースを実行すると、正常に動作します。
Jenkinsfile構文を参照してください
pipeline {
agent { label 'win-slave-node' }
stages {
stage('build') {
steps {
bat "\"${tool 'MSBuild'}\" SimpleWindowsProject.sln /t:Rebuild /p:Configuration=Release"
}
}
}
}
また、更新されていないWindowsスレーブの環境変数を変更しようとしました。
注:スレーブノードにMSビルドツールをインストールしました
Declarative Pipeline 構文では、MSBuildのツールは少し不格好です。 script
ブロックを使用してこれを処理する方法は次のとおりです。
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"
}
}
}
}
}
古いスクリプトパイプライン構文では、次のようになります。
node('win-slave-node') {
def msbuild = tool name: 'MSBuild', type: 'hudson.plugins.msbuild.MsBuildInstallation'
stage('Checkout') {
checkout scm
}
stage('Build') {
bat "${msbuild} SimpleWindowsProject.sln"
}
}
提供された答えは確かに機能しますが、正しい完全なツール名を提供する必要があります。
私たちのインストールでは、3つの異なるMSBuildバージョンが利用可能であり、以下を使用することができます
${tool 'MSBuild 15.0 [32bit]'}
スクリプトブロックのグローバルツール構成にインストールされるmsbuild
を定義する必要があります
stage('App_Build'){
steps{
tool name: 'MsBuild', type: 'msbuild'
bat "\"${tool 'MsBuild'}\"My.Service.sln /t:Rebuild /p:Configuration=Release"
}
}
これは動作します