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

Core 2.110 is unable to select a branch source via the server dropdown

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Critical Critical
    • core
    • Jenkins core 2.110
      Recommended plugins at install time

      Summary:
      Starting with an empty directory for JENKINS_HOME, and running via java -jar jenkins.war, the ability to select a branch source for a multibranch pipeline doesn't work with core 2.110. But with core 2.109, it works fine.

      Prerequisites:
      Have a Bitbucket server instance, or a GitHub Enterprise instance, available. This issue was originally written up using Bitbucket server, but I've confirmed that it can be recreated with both Bitbucket and GitHub Enterprise.

      Steps to recreate:
      1. Download the 2.110 war

      2. Create an empty directory for your JENKINS_HOME, and export this as $JENKINS_HOME:

      [kshultz@karl-fedora jenkinsWars]$ rm -rf ~/JENKINS_HOME/
      [kshultz@karl-fedora jenkinsWars]$ mkdir ~/JENKINS_HOME
      [kshultz@karl-fedora jenkinsWars]$ export JENKINS_HOME=~/JENKINS_HOME/
      

      3. Go through the usual setup wizard, and choose to install suggested plugins.

      4. Once Jenkins is fully up and running, install bitbucket-branch-source from the Manage Plugins page. Have Jenkins reboot once installation is complete.

      5. Go to Manage Jenkins, and set up your Bitbucket server as follows:

      6. Create a new Multibranch Pipeline project. Under Branch Sources, click the "Add Source" button, and select Bitbucket:

      7. Click on the "Server" drop down. Nothing shows up - the drop down is inop.

      8. Open your browser console and switch to the Network tab. Clear the console, reload the page, and try clicking on that drop down:

      prototype.js:1794 XHR finished loading: POST "http://127.0.0.1:8080/$stapler/bound/4f662ac2-9cdb-49d6-bf21-975c41fe462e/render".
      request @ prototype.js:1794
      initialize @ prototype.js:1759
      (anonymous) @ prototype.js:470
      klass @ prototype.js:80
      proxy.(anonymous function) @ bind.js:48
      renderOnDemand @ hudson-behavior.js:554
      (anonymous) @ hetero-list.js:53
      notify @ event-min.js:7
      fire @ event-min.js:7
      e @ menu-min.js:7
      n @ event-min.js:7
      17:06:17.322 hudson-behavior.js:479 Unable to find nearby bitbucketServerUrl
      (anonymous) @ hudson-behavior.js:479
      each @ prototype.js:887
      registerValidator @ hudson-behavior.js:476
      (anonymous) @ behavior.js:111
      (anonymous) @ behavior.js:107
      applySubtree @ behavior.js:93
      (anonymous) @ hetero-list.js:107
      (anonymous) @ hudson-behavior.js:577
      next @ hudson-behavior.js:616
      script.onload.script.onreadystatechange @ hudson-behavior.js:2711
      17:06:17.338 prototype.js:2906 Uncaught TypeError: Cannot read property 'length' of undefined
          at Function.hasClassName (prototype.js:2906)
          at findAncestorClass (hudson-behavior.js:300)
          at VM3557 traits.js:37
          at Array.forEach (<anonymous>)
          at behavior.js:111
          at Array.forEach (<anonymous>)
          at behavior.js:107
          at Array.forEach (<anonymous>)
          at Object.applySubtree (behavior.js:93)
          at hetero-list.js:107
      hasClassName @ prototype.js:2906
      findAncestorClass @ hudson-behavior.js:300
      (anonymous) @ traits.js:37
      (anonymous) @ behavior.js:111
      (anonymous) @ behavior.js:107
      applySubtree @ behavior.js:93
      (anonymous) @ hetero-list.js:107
      (anonymous) @ hudson-behavior.js:577
      next @ hudson-behavior.js:616
      script.onload.script.onreadystatechange @ hudson-behavior.js:2711
      17:06:17.438 prototype.js:1794 XHR finished loading: GET "http://127.0.0.1:8080/job/thing/descriptorByName/com.cloudbees.jenkins.plugins.bitbucket.BitbucketSCMSource/checkServerUrl?value=".
      request @ prototype.js:1794
      initialize @ prototype.js:1759
      (anonymous) @ prototype.js:470
      klass @ prototype.js:80
      sendRequest @ hudson-behavior.js:171
      schedule @ hudson-behavior.js:179
      delayedCheck @ hudson-behavior.js:162
      registerValidator @ hudson-behavior.js:450
      (anonymous) @ behavior.js:111
      (anonymous) @ behavior.js:107
      applySubtree @ behavior.js:93
      (anonymous) @ hetero-list.js:107
      (anonymous) @ hudson-behavior.js:577
      next @ hudson-behavior.js:616
      script.onload.script.onreadystatechange @ hudson-behavior.js:2711
      17:06:17.441 prototype.js:1794 XHR finished loading: POST "http://127.0.0.1:8080/$stapler/bound/5502c944-cc5a-40e2-8c8d-4926d7433ee2/render".
      request @ prototype.js:1794
      initialize @ prototype.js:1759
      (anonymous) @ prototype.js:470
      klass @ prototype.js:80
      proxy.(anonymous function) @ bind.js:48
      renderOnDemand @ hudson-behavior.js:554
      updateDropDownList @ hudson-behavior.js:1127
      SELECT.dropdownList @ hudson-behavior.js:1142
      (anonymous) @ behavior.js:111
      (anonymous) @ behavior.js:107
      applySubtree @ behavior.js:93
      (anonymous) @ hetero-list.js:107
      (anonymous) @ hudson-behavior.js:577
      next @ hudson-behavior.js:616
      script.onload.script.onreadystatechange @ hudson-behavior.js:2711
      17:06:17.505 prototype.js:1794 XHR finished loading: GET "http://127.0.0.1:8080/job/thing/descriptorByName/com.cloudbees.jenkins.plugins.bitbucket.BitbucketSCMSource/checkCredentialsId?value=".
      request @ prototype.js:1794
      initialize @ prototype.js:1759
      (anonymous) @ prototype.js:470
      klass @ prototype.js:80
      sendRequest @ hudson-behavior.js:171
      schedule @ hudson-behavior.js:179
      onComplete @ hudson-behavior.js:184
      respondToReadyState @ prototype.js:1880
      onStateChange @ prototype.js:1809
      XMLHttpRequest.send (async)
      request @ prototype.js:1794
      initialize @ prototype.js:1759
      (anonymous) @ prototype.js:470
      klass @ prototype.js:80
      sendRequest @ hudson-behavior.js:171
      schedule @ hudson-behavior.js:179
      delayedCheck @ hudson-behavior.js:162
      registerValidator @ hudson-behavior.js:450
      (anonymous) @ behavior.js:111
      (anonymous) @ behavior.js:107
      applySubtree @ behavior.js:93
      (anonymous) @ hetero-list.js:107
      (anonymous) @ hudson-behavior.js:577
      next @ hudson-behavior.js:616
      script.onload.script.onreadystatechange @ hudson-behavior.js:2711
      

      It's possible to retrace these steps with core 2.109, and it will work just fine.

          [JENKINS-49968] Core 2.110 is unable to select a branch source via the server dropdown

          Karl Shultz added a comment -

          oleg_nenashev, I've bisected the changes and come to the following conclusion:

          ✔ ~/GitHub/jenkins [:f1fc0f02ed|✔] 
          14:57 $ git bisect good
          5ed43002d7daca06676c565aab18c1842123281f is the first bad commit
          commit 5ed43002d7daca06676c565aab18c1842123281f
          Author: Ulli Hafner <ullrich.hafner@gmail.com>
          Date:   Thu Feb 1 21:17:34 2018 +0100
          
              [FIXED JENKINS-49319] Upgrade to Prototype 1.7.3.
          
          :040000 040000 8d40973073abf237c86765badafcadc58e1faeb7 64c7df1c2b29ed97b3436229e71369ae8ac95870 M	war
          

          I hope this is helpful!

          Karl Shultz added a comment - oleg_nenashev , I've bisected the changes and come to the following conclusion: ✔ ~/GitHub/jenkins [:f1fc0f02ed|✔] 14:57 $ git bisect good 5ed43002d7daca06676c565aab18c1842123281f is the first bad commit commit 5ed43002d7daca06676c565aab18c1842123281f Author: Ulli Hafner <ullrich.hafner@gmail.com> Date: Thu Feb 1 21:17:34 2018 +0100 [FIXED JENKINS-49319] Upgrade to Prototype 1.7.3. :040000 040000 8d40973073abf237c86765badafcadc58e1faeb7 64c7df1c2b29ed97b3436229e71369ae8ac95870 M war I hope this is helpful!

          Ryan Campbell added a comment - - edited

          drulli It seems like your upgrade of Prototype 1.7.3 broke Jenkins validation logic.

          danielbeck Perhaps we should just roll this back?

          Ryan Campbell added a comment - - edited drulli It seems like your upgrade of Prototype 1.7.3 broke Jenkins validation logic. danielbeck Perhaps we should just roll this back?

          Oleg Nenashev added a comment -

          Let's give drulli some time to review it.
          We can always rollback on Friday if it is really needed.

          Oleg Nenashev added a comment - Let's give drulli some time to review it. We can always rollback on Friday if it is really needed.

          Devin Nusbaum added a comment - - edited

          The specific error in the console appears to have been reported as https://github.com/sstephenson/prototype/issues/329. I will try a similar patch to see if it fixes the issue.

          EDIT: With that patch I get a different error (in lib.form.select/select.js), so I'm not sure if it's worth the work to fix the issue vs reverting.

          Devin Nusbaum added a comment - - edited The specific error in the console appears to have been reported as https://github.com/sstephenson/prototype/issues/329 . I will try a similar patch to see if it fixes the issue. EDIT: With that patch I get a different error (in lib.form.select/select.js), so I'm not sure if it's worth the work to fix the issue vs reverting.

          Ulli Hafner added a comment -

          I also tried to fix this in Prototype but then I get an error elsewhere: seems that the callee of Prototype expects something different. I don't think that this is a bug in Prototype: this is hidden somewhere in the JS scripts select.js (credentials buttons) and behavior.js. It now shows up due to the new library behavior. It is hard to understand these two scripts just from the source code, isn't there someone in the core team who knows about these two scripts? If not, we should revert the library upgrade.

          Ulli Hafner added a comment - I also tried to fix this in Prototype but then I get an error elsewhere: seems that the callee of Prototype expects something different. I don't think that this is a bug in Prototype: this is hidden somewhere in the JS scripts select.js (credentials buttons) and behavior.js. It now shows up due to the new library behavior. It is hard to understand these two scripts just from the source code, isn't there someone in the core team who knows about these two scripts? If not, we should revert the library upgrade.

          Oleg Nenashev added a comment -

          Maybe recena or kzantow could help us here

          Oleg Nenashev added a comment - Maybe recena or kzantow could help us here

          drulli My proposal is to revert the upgrade, and carry out taking into account this side effect.

          Manuel Recena Soto added a comment - drulli My proposal is to revert the upgrade, and carry out taking into account this side effect.

          Ulli Hafner added a comment -

          Yes, this is the plan already: https://github.com/jenkinsci/jenkins/pull/3342.

          The question is, if someone with JS know-how could have a look into `select.js` and `behavior.js` why the calls to PrototypJS do not work as expected. Any chance that you can look into this?

          Ulli Hafner added a comment - Yes, this is the plan already: https://github.com/jenkinsci/jenkins/pull/3342 . The question is, if someone with JS know-how could have a look into `select.js` and `behavior.js` why the calls to PrototypJS do not work as expected. Any chance that you can look into this?

          Code changed in jenkins
          User: Daniel Beck
          Path:
          war/src/main/webapp/scripts/prototype.js
          http://jenkins-ci.org/commit/jenkins/e3d84a386d8f2188f7b396d61d8a84a6c2b0d0bd
          Log:
          Merge pull request #3342 from daniel-beck/JENKINS-49968

          JENKINS-49968 Revert "Merge pull request #3277 from uhafner/prototype-1.7.3"

          Compare: https://github.com/jenkinsci/jenkins/compare/81f93cdc1b43...e3d84a386d8f

          SCM/JIRA link daemon added a comment - Code changed in jenkins User: Daniel Beck Path: war/src/main/webapp/scripts/prototype.js http://jenkins-ci.org/commit/jenkins/e3d84a386d8f2188f7b396d61d8a84a6c2b0d0bd Log: Merge pull request #3342 from daniel-beck/ JENKINS-49968 JENKINS-49968 Revert "Merge pull request #3277 from uhafner/prototype-1.7.3" Compare: https://github.com/jenkinsci/jenkins/compare/81f93cdc1b43...e3d84a386d8f

          Oleg Nenashev added a comment -

          Prototype.js upgrade will be reverted in 2.111

          Oleg Nenashev added a comment - Prototype.js upgrade will be reverted in 2.111

            drulli Ulli Hafner
            kshultz Karl Shultz
            Votes:
            4 Vote for this issue
            Watchers:
            13 Start watching this issue

              Created:
              Updated:
              Resolved: