-
Bug
-
Resolution: Cannot Reproduce
-
Trivial
-
None
-
Java 1.8.0_31
Clean installation of Jenkins 1.617;
Additional plugins:
- Active Choices 1.0
- Validating String Parameter 2.3
- jQuery 1.11.2-0
In short: I tried to migrate an existing project from Uno Choice 0.19 to Active Choice 1.0 and I found that I can not reach the referred parameter. I tried various methods to get the value of the referred parameter with no success. I tried to reproduce the problem on a clean Jenkins copy and everything worked like a charm. What was going on, then?!
Here you are the details:
1. I installed a fresh copy of Jenkins - I took jenkins.war version 1.617 and started it with
java -jar jenkins.war
2. Entered the management console and:
- dismissed the "Unsecured Jenkins" warning;
- updated all plugins;
- installed Validating String Parameter Plugin ( https://wiki.jenkins-ci.org/display/JENKINS/Validating+String+Parameter+Plugin ) because our original project uses it (and, to be honest, because in the beginning I thought that it is the one that is not compatible with Active Choices plugin);
- Installed Active Choices Plugin version 1.0 ( https://wiki.jenkins-ci.org/display/JENKINS/Active+Choices+Plugin )
- restarted Jenkins;
Here is the list of the installed plugins with their versions:
Active Choices Plug-in | 1.0 Ant Plugin | 1.2 Credentials Plugin | 1.22 CVS Plug-in | 2.12 External Monitor Job Type Plugin | 1.4 GIT client plugin | 1.17.1 GIT plugin | 2.3.5 Git server plugin | 1.6 Javadoc Plugin | 1.3 JUnit Plugin | 1.6 LDAP Plugin | 1.11 Mailer Plugin | 1.15 MapDB API Plugin | 1.0.6.0 Matrix Authorization Strategy Plugin| 1.2 Matrix Project Plugin | 1.6 Maven Integration plugin | 2.10 OWASP Markup Formatter Plugin | 1.3 PAM Authentication plugin | 1.2 SCM API Plugin | 0.2 Script Security Plugin | 1.14 Scriptler | 2.7 SSH Credentials Plugin | 1.11 SSH Slaves plugin | 1.9 Subversion Plug-in | 2.5 Token Macro Plugin | 1.10 Translation Assistance plugin | 1.12 Validating String Parameter Plugin | 2.3 Windows Slaves Plugin | 1.1
3. Created a simple test project (attached). You can see that its only purpose is to get the value of the Validating String parameter using different paths;
4. Opened the test project and hit "Build with Parameters"
The observations on the script running:
A. There is always one error thrown on the page load:
Jun 23, 2015 4:57:02 PM FINEST org.biouno.unochoice.model.GroovyScript Fallback to default script... groovy.lang.MissingPropertyException: No such property: validStr for class: Script1 at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:50) at org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty(PogoGetPropertySite.java:49) at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty(AbstractCallSite.java:231) at Script1.run(Script1.groovy:2) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:580) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:618) at groovy.lang.GroovyShell.evaluate(GroovyShell.java:589) at org.biouno.unochoice.model.GroovyScript.eval(GroovyScript.java:128) at org.biouno.unochoice.util.ScriptCallback.call(ScriptCallback.java:69) at org.biouno.unochoice.AbstractScriptableParameter.eval(AbstractScriptableParameter.java:138) at org.biouno.unochoice.AbstractScriptableParameter.getChoices(AbstractScriptableParameter.java:104) at org.biouno.unochoice.AbstractScriptableParameter.getChoices(AbstractScriptableParameter.java:93) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.apache.commons.jexl.util.introspection.UberspectImpl$VelMethodImpl.invoke(UberspectImpl.java:258) at org.apache.commons.jexl.parser.ASTMethod.execute(ASTMethod.java:104) at org.apache.commons.jexl.parser.ASTReference.execute(ASTReference.java:83) at org.apache.commons.jexl.parser.ASTReference.value(ASTReference.java:57) at org.apache.commons.jexl.parser.ASTReferenceExpression.value(ASTReferenceExpression.java:51) at org.apache.commons.jexl.ExpressionImpl.evaluate(ExpressionImpl.java:80) at hudson.ExpressionFactory2$JexlExpression.evaluate(ExpressionFactory2.java:74) ...
B. Immediately after that the (valid) script output is observed in the console:
--------------------------------------------- ---> validStr= ---> validStr= ---> binding.variables.get = ---> binding = groovy.lang.Binding@2d47c5ae ---> binding.variables = [validStr:] ---> binding.getProperty = ---> getBinding = groovy.lang.Binding@2d47c5ae ---> getProperty =
C. Entering a value in the Validating String parameter, on the exit (lost focus) of the text field, the correct value is observed in the Active Choices parameter:
--------------------------------------------- ---> validStr= 123 ---> validStr= 123 ---> binding.variables.get = 123 ---> binding = groovy.lang.Binding@2c331bee ---> binding.variables = [validStr:123] ---> binding.getProperty = 123 ---> getBinding = groovy.lang.Binding@2c331bee ---> getProperty = 123
So far - so good
5. (In short) Installed jQuery Plugin ( https://wiki.jenkins-ci.org/display/JENKINS/jQuery+Plugin ) and restarted Jenkins. The newly installed plugin is
{{ jQuery plugin | 1.11.2-0}}
6. Opened the test project and hit "Build with Parameters"
The observations on the script running:
A. The "No such property" exception is still there;
B. Immediately after that the (valid) script output is observed in the console:
--------------------------------------------- ---> validStr= ---> validStr= ---> binding.variables.get = ---> binding = groovy.lang.Binding@2d47c5ae ---> binding.variables = [validStr:] ---> binding.getProperty = ---> getBinding = groovy.lang.Binding@2d47c5ae ---> getProperty =
C. Entering a value in the Validating String parameter, on the exit (lost focus) of the text field, the NO value is observed in the Active Choices parameter:
--------------------------------------------- ---> validStr= ---> validStr= ---> binding.variables.get = ---> binding = groovy.lang.Binding@1af9ece6 ---> binding.variables = [validStr:] ---> binding.getProperty = ---> getBinding = groovy.lang.Binding@1af9ece6 ---> getProperty =
7. Edited the test project and gave the Validating String parameter a default value - "234". Saved the new definition and hit "Build with Parameters"
The observations on the script running:
A. The "No such property" exception is still there;
B. Immediately after that the (valid) script output is observed in the console - the default value is displayed:
--------------------------------------------- ---> validStr= 234 ---> validStr= 234 ---> binding.variables.get = 234 ---> binding = groovy.lang.Binding@4ae9665a ---> binding.variables = [validStr:234] ---> binding.getProperty = 234 ---> getBinding = groovy.lang.Binding@4ae9665a ---> getProperty = 234
C. Entering a different value ("123" in the Validating String parameter, on the exit (lost focus) of the text field, the default value is observed in the Active Choices parameter:
--------------------------------------------- ---> validStr= 234 ---> validStr= 234 ---> binding.variables.get = 234 ---> binding = groovy.lang.Binding@77a897d5 ---> binding.variables = [validStr:234] ---> binding.getProperty = 234 ---> getBinding = groovy.lang.Binding@77a897d5 ---> getProperty = 234
9. Removed the jQuery plugin, restarted Jenkins and the correct behavior of Active Choices parameter came back.
Notes:
- during all experiments there are no other errors registered in Jenkins logs except the "No such property" one;
- the existing project (the one that uses Uno Choice 0.19) works fine with the mentioned jQuery version 1.11.2-0
To be honest, I repeated the above scenario (from the Jenkins installation) several times due to different technical reasons and the result was always the same - jQuery interferes with Active Choices Plugin
Hi, I spent some time today tried to reproduce, but it is working correctly for me in development (Eclipse + Maven) and also in an existing installation that was upgraded from Uno Choice 0.23 to Active Choices 1.0. I'm closing as I cannot reproduce, but users facing the same problem will be able to find this issue and follow your work flow to see if they can fix their installations.
Thanks a lot for reporting and for the detailed issue description
Bruno