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

Parallel nodes for scripted pipelines cannot be clicked

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Major Major
    • blueocean-plugin
    • Jenkins version 2.46.1, Blue Origin 1.0.1,
      Chrome 58.0.3029.96, Safari 10.1

      Jenkins is installed via yum on a CentOS machine and is not using a reverse proxy.
    • Blue Ocean 1.1

      Problem

      • Parallel nodes defined within a script block cannot be selected while running
      • Parallel nodes defined in Pipeline script cannot be selected

      Notes

      • Parallel nodes for declarative are NOT broken
      • Verified on 1.1-beta2 as well as 1.0.1

      Screencast

       

      To reproduce, run one of the scripts below as a non multibranch pipeline - note that you can't click on an in progress branch. 

      I have tested with the following combinations and all of them had this problem

      Jenkins using script syntax and non-dynamic parallel

      node {
          stage("Build/Test") {
              parallel(
                "b1": {
                  sh 'ping -c 5 localhost'
                },
                "b2": {
                  sh 'ping -c 10 localhost'
                },
                "b3": {
                  sh 'ping -c 20 localhost'
                }
              )
          }
      }
      

      Jenkinsfile using script syntax and dynamic parallel

      node {
          stage("Build/Test") {
              def builds = [:]
      
              for (def option in ["one", "two"]) {
                      def node_name = ""
                      if ("one" == "${option}") {
                          node_name = "node001"
                      } else {
                          node_name = "node002"
                      }
                      
                      def option_inside = "${option}"
                      
                      builds["${node_name} ${option_inside}"] = {
                          node {
                              stage("Build Test ${node_name} ${option_inside}") {
                                  sh 'ping -c 10 localhost'
                              }
                          }
                      }
              }
              parallel builds
          }
      }
      

      Jenkinsfile using script syntax without inner stages

      node {
          stage("Build/Test") {
              def builds = [:]
      
              for (def option in ["one", "two"]) {
                      def node_name = ""
                      if ("one" == "${option}") {
                          node_name = "node001"
                      } else {
                          node_name = "node002"
                      }
                      
                      def option_inside = "${option}"
                      
                      builds["${node_name} ${option_inside}"] = {
                          node {
                              sh 'ping -c 10 localhost'
                          }
                      }
              }
              parallel builds
          }
      }
      

      Declarative Jenkinsfile using script block

      pipeline {
          agent none
          stages {
              stage("Build/Test") {
                  steps {
                      script {
                        def builds = [:]
      
                        for (def option in ["one", "two"]) {
                                def node_name = ""
                                if ("one" == "${option}") {
                                    node_name = "node001"
                                } else {
                                    node_name = "node002"
                                }
                                
                                def option_inside = "${option}"
                                
                                builds["${node_name} ${option_inside}"] = {
                                    node {
                                        stage("Build Test ${node_name} ${option_inside}") {
                                            sh 'ping -c 10 localhost'
                                        }
                                    }
                                }
                        }
                        parallel builds
                      }
                  }
              }
          }
      }
      

            Unassigned Unassigned
            wbland Wesley Bland
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: