-
New Feature
-
Resolution: Fixed
-
Minor
-
None
-
scriptler 2.5.1, token-macro 1.6
When executing a groovy script which accepts some parameters as input and some parameters contain a '$' (e.g. some$pass!) the following happens:
17:04:13 Execution of script [somescript.groovy] failed - Unrecognized macro 'pass' in 'some$pass!'org.jenkinsci.plugins.tokenmacro.MacroEvaluationException: Unrecognized macro 'pass' in 'some$pass!' 17:04:13 at org.jenkinsci.plugins.tokenmacro.TokenMacro.expand(TokenMacro.java:185) 17:04:13 at org.jenkinsci.plugins.tokenmacro.TokenMacro.expandAll(TokenMacro.java:219) 17:04:13 at org.jenkinsci.plugins.tokenmacro.TokenMacro.expandAll(TokenMacro.java:208) 17:04:13 at org.jenkinsci.plugins.scriptler.builder.ScriptlerBuilder.perform(ScriptlerBuilder.java:104)
If I understand the code correctly the behaviour of the token-macro plugin trying to expand the contents of the parameters is wanted (JENKINS-11914 is related to this). However it is problematic when passing on parameters which contain a '$' and should not be expanded.
Therefore a feature which lets the user define whether a specific parameter or all parameters should be expanded would be useful.
In the meantime I did a workaround to prevent this error:
This will return the value of the parameter, if no defined build or environment variable is found. It might be a cheap solution for the stated problem but might not be the behaviour every user of this plugin is looking for (e.g. would pass on ${someVar} if not expandable to the script instead of stopping with an error).
However it works for me.
I attached the patch file. Maybe it is of some use.