Details
-
Bug
-
Status: Closed (View Workflow)
-
Minor
-
Resolution: Cannot Reproduce
-
None
-
Jenkins version 2.164.3
cmake plugin version 2.6.1
Description
I'm trying to simulate matrix build using Pipeline
Pipeline snippet
def cmake_tasks(os_labels, configs, DL_on_off) { tasks = [:] def DL_dir_labels = ['ON': 'DL', 'OFF': 'noDL'] for(int i = 0; i < os_labels.size(); i++) { def os = os_labels[i] for (int j = 0; j < configs.size(); j++) { for (int k = 0; k < DL_on_off.size(); k++) { def config = configs[j] def DL = DL_on_off[k] def DL_dir_label = DL_dir_labels["${DL}"] def generator = "Ninja" def steps = [[withCmake: true]] def cmakeArgs = "-Dsomevar=somevalue" def cmake_inst = 'InSearchPath' tasks["${os}/${config}/${DL_dir_label}"] = { node("build && ${os}") { stage("${os}/${config}/${DL_dir_label}") { if (os == "windows") { // does not matter } else { cmakeBuild(buildDir: "build_${config}_${DL_dir_label}", buildType: config, cleanBuild: true, cmakeArgs: cmakeArgs, generator: generator, installation: cmake_inst, sourceDir: ".", steps: steps) } } } } } } } return tasks } pipeline { agent none stages { stage('Configure & Build') { steps { script { def OSes = ["windows", "linux"] def configs = ["Release", "Debug"] def DL_inc = ["ON", "OFF"] parallel cmake_tasks(OSes, configs, DL_inc) } } } } }
Sometimes I see failed steps with the output similar to the following (please, note that "CMAKE_BUILD_TYPE=Debug" is concatenated with a path):
Cleaning build dir /jenkins/workspace/project@7/build_Debug_DL ... [build_Debug_DL] $ cmake -G Ninja -D CMAKE_BUILD_TYPE=Debug -Dsomevar=somevalue /jenkins/workspace/project@7 CMake Error: The source directory "/jenkins/workspace/project@7/build_Debug_DL/CMAKE_BUILD_TYPE=Debug" does not exist. Specify --help for usage, or press the help button on the CMake GUI.
Sorry, cannot reproduce the error with Jenkins ver. 2.150.3 and cmake plugin 2.8.1.
Does the problem still persist? If so, remove the
sourceDir: ".",
specification from the script and re-try. If sourceDir is not specified, the workspace-root is used by default.