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

Jenkins parallel pipeline: All subroutine calls in parameter blocks pass arguments from last block

      We are using a goovy-script in a parallel step and using an external method.
      I am expecting the parameter value dumped in [aaa] to be 'aaa', not 'eee'.

      def build_if_needed(project) {
        println "build_if_needed: $project"
        // ultimately this will kick off a build job...
      }
      
      parallel (
        aaa : { build_if_needed('aaa')},
        bbb : { build_if_needed('bbb')},
        ccc : { build_if_needed('ccc')},
        ddd : { build_if_needed('ddd')},
        eee : { build_if_needed('eee')}
      )
      

      The result is:

      [Pipeline] parallel
      [Pipeline] [aaa] { (Branch: aaa)
      [Pipeline] [bbb] { (Branch: bbb)
      [Pipeline] [ccc] { (Branch: ccc)
      [Pipeline] [ddd] { (Branch: ddd)
      [Pipeline] [eee] { (Branch: eee)
      [Pipeline] [aaa] echo
      [aaa] build_if_needed: eee
      [Pipeline] [aaa] }
      [Pipeline] [bbb] echo
      [bbb] build_if_needed: eee
      [Pipeline] [bbb] }
      [Pipeline] [ccc] echo
      [ccc] build_if_needed: eee
      [Pipeline] [ccc] }
      [Pipeline] [ddd] echo
      [ddd] build_if_needed: eee
      [Pipeline] [ddd] }
      [Pipeline] [eee] echo
      [eee] build_if_needed: eee
      [Pipeline] [eee] }
      [Pipeline] // parallel
      [Pipeline] End of Pipeline
      Finished: SUCCESS
      

          [JENKINS-40339] Jenkins parallel pipeline: All subroutine calls in parameter blocks pass arguments from last block

          Sascha Vujevic created issue -
          Sascha Vujevic made changes -
          Description Original: We are using a goovy-script in a parallel step and using a external method.
          am expecting the parameter value dumped in [aaa] to be 'aaa', not 'eee'.


          {code:java}
          def build_if_needed(project) {
            println "build_if_needed: $project"
            // ultimately this will kick off a build job...
          }

          parallel (
            aaa : { build_if_needed('aaa')},
            bbb : { build_if_needed('bbb')},
            ccc : { build_if_needed('ccc')},
            ddd : { build_if_needed('ddd')},
            eee : { build_if_needed('eee')}
          )
          {code}

          The result is:

          {code:java}
          [Pipeline] parallel
          [Pipeline] [aaa] { (Branch: aaa)
          [Pipeline] [bbb] { (Branch: bbb)
          [Pipeline] [ccc] { (Branch: ccc)
          [Pipeline] [ddd] { (Branch: ddd)
          [Pipeline] [eee] { (Branch: eee)
          [Pipeline] [aaa] echo
          [aaa] build_if_needed: eee
          [Pipeline] [aaa] }
          [Pipeline] [bbb] echo
          [bbb] build_if_needed: eee
          [Pipeline] [bbb] }
          [Pipeline] [ccc] echo
          [ccc] build_if_needed: eee
          [Pipeline] [ccc] }
          [Pipeline] [ddd] echo
          [ddd] build_if_needed: eee
          [Pipeline] [ddd] }
          [Pipeline] [eee] echo
          [eee] build_if_needed: eee
          [Pipeline] [eee] }
          [Pipeline] // parallel
          [Pipeline] End of Pipeline
          Finished: SUCCESS
          {code}

          New: We are using a goovy-script in a parallel step and using an external method.
          am expecting the parameter value dumped in [aaa] to be 'aaa', not 'eee'.


          {code:java}
          def build_if_needed(project) {
            println "build_if_needed: $project"
            // ultimately this will kick off a build job...
          }

          parallel (
            aaa : { build_if_needed('aaa')},
            bbb : { build_if_needed('bbb')},
            ccc : { build_if_needed('ccc')},
            ddd : { build_if_needed('ddd')},
            eee : { build_if_needed('eee')}
          )
          {code}

          The result is:

          {code:java}
          [Pipeline] parallel
          [Pipeline] [aaa] { (Branch: aaa)
          [Pipeline] [bbb] { (Branch: bbb)
          [Pipeline] [ccc] { (Branch: ccc)
          [Pipeline] [ddd] { (Branch: ddd)
          [Pipeline] [eee] { (Branch: eee)
          [Pipeline] [aaa] echo
          [aaa] build_if_needed: eee
          [Pipeline] [aaa] }
          [Pipeline] [bbb] echo
          [bbb] build_if_needed: eee
          [Pipeline] [bbb] }
          [Pipeline] [ccc] echo
          [ccc] build_if_needed: eee
          [Pipeline] [ccc] }
          [Pipeline] [ddd] echo
          [ddd] build_if_needed: eee
          [Pipeline] [ddd] }
          [Pipeline] [eee] echo
          [eee] build_if_needed: eee
          [Pipeline] [eee] }
          [Pipeline] // parallel
          [Pipeline] End of Pipeline
          Finished: SUCCESS
          {code}

          Sascha Vujevic made changes -
          Description Original: We are using a goovy-script in a parallel step and using an external method.
          am expecting the parameter value dumped in [aaa] to be 'aaa', not 'eee'.


          {code:java}
          def build_if_needed(project) {
            println "build_if_needed: $project"
            // ultimately this will kick off a build job...
          }

          parallel (
            aaa : { build_if_needed('aaa')},
            bbb : { build_if_needed('bbb')},
            ccc : { build_if_needed('ccc')},
            ddd : { build_if_needed('ddd')},
            eee : { build_if_needed('eee')}
          )
          {code}

          The result is:

          {code:java}
          [Pipeline] parallel
          [Pipeline] [aaa] { (Branch: aaa)
          [Pipeline] [bbb] { (Branch: bbb)
          [Pipeline] [ccc] { (Branch: ccc)
          [Pipeline] [ddd] { (Branch: ddd)
          [Pipeline] [eee] { (Branch: eee)
          [Pipeline] [aaa] echo
          [aaa] build_if_needed: eee
          [Pipeline] [aaa] }
          [Pipeline] [bbb] echo
          [bbb] build_if_needed: eee
          [Pipeline] [bbb] }
          [Pipeline] [ccc] echo
          [ccc] build_if_needed: eee
          [Pipeline] [ccc] }
          [Pipeline] [ddd] echo
          [ddd] build_if_needed: eee
          [Pipeline] [ddd] }
          [Pipeline] [eee] echo
          [eee] build_if_needed: eee
          [Pipeline] [eee] }
          [Pipeline] // parallel
          [Pipeline] End of Pipeline
          Finished: SUCCESS
          {code}

          New: We are using a goovy-script in a parallel step and using an external method.
          I am expecting the parameter value dumped in [aaa] to be 'aaa', not 'eee'.


          {code:java}
          def build_if_needed(project) {
            println "build_if_needed: $project"
            // ultimately this will kick off a build job...
          }

          parallel (
            aaa : { build_if_needed('aaa')},
            bbb : { build_if_needed('bbb')},
            ccc : { build_if_needed('ccc')},
            ddd : { build_if_needed('ddd')},
            eee : { build_if_needed('eee')}
          )
          {code}

          The result is:

          {code:java}
          [Pipeline] parallel
          [Pipeline] [aaa] { (Branch: aaa)
          [Pipeline] [bbb] { (Branch: bbb)
          [Pipeline] [ccc] { (Branch: ccc)
          [Pipeline] [ddd] { (Branch: ddd)
          [Pipeline] [eee] { (Branch: eee)
          [Pipeline] [aaa] echo
          [aaa] build_if_needed: eee
          [Pipeline] [aaa] }
          [Pipeline] [bbb] echo
          [bbb] build_if_needed: eee
          [Pipeline] [bbb] }
          [Pipeline] [ccc] echo
          [ccc] build_if_needed: eee
          [Pipeline] [ccc] }
          [Pipeline] [ddd] echo
          [ddd] build_if_needed: eee
          [Pipeline] [ddd] }
          [Pipeline] [eee] echo
          [eee] build_if_needed: eee
          [Pipeline] [eee] }
          [Pipeline] // parallel
          [Pipeline] End of Pipeline
          Finished: SUCCESS
          {code}

          Andrew Bayer made changes -
          Component/s New: workflow-cps-plugin [ 21713 ]
          Component/s Original: pipeline [ 21692 ]
          Andrew Bayer made changes -
          Link New: This issue duplicates JENKINS-26481 [ JENKINS-26481 ]
          Andrew Bayer made changes -
          Resolution New: Duplicate [ 3 ]
          Status Original: Open [ 1 ] New: Resolved [ 5 ]

            Unassigned Unassigned
            george_stark Sascha Vujevic
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: