Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-57502

Cmake arguments sometimes are added to path in parallel build

    XMLWordPrintable

Details

    • Bug
    • Status: Closed (View Workflow)
    • Minor
    • Resolution: Cannot Reproduce
    • cmakebuilder-plugin
    • 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.
      

      Attachments

        Activity

          The problem has gone.

           

          Jenkins version was updated to 2.176.1

          Cmake plugin version is 2.6.1

          Cmake program version is 3.13

           

           

          wl2776 Vladimir Eremeev added a comment - The problem has gone.   Jenkins version was updated to 2.176.1 Cmake plugin version is 2.6.1 Cmake program version is 3.13    
          15knots Martin Weber added a comment -

          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.

          15knots Martin Weber added a comment - 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.

          People

            15knots Martin Weber
            wl2776 Vladimir Eremeev
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: