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

Allow to use @Grab in a Script Console

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      Currently @Grab works only in Groovy scripts run on a forked JVM. In a Script Console and System Groovy Scripts it ends with:

      FATAL: org/apache/ivy/core/report/ResolveReport
      java.lang.NoClassDefFoundError: org/apache/ivy/core/report/ResolveReport
      

      It is sometimes useful to be able to extend script abilities with external libs (like HTTP Builder).

        Attachments

          Issue Links

            Activity

            Hide
            kbaltrinic Kenneth Baltrinic added a comment - - edited

            Perhaps I don't understand the terms clearly either so I will attempt to be a descriptive as possible. First this is with Jenkins v 1.592 which has the Hudson Groovy Builder 1.24 installed and all of the Workflow 1.0 plugins installed. In its earlier version Hudson Groovy Builder appears to have also been called the "Groovy Plugin."

            With this combination of components, @Grab works when using the "Execute Groovy script" option within a free-style job (this is what I meant above the "Groovy Plugin" and "Groovy build step".) To my knowledge this is the only place that it works.

            The locations I specifically have tried and confirmed not to work are:

            1. In the Groovy Console: Jenkins > Manage Jenkins > Script Console
            2. In workflow jobs, in the Workflow Definition when using Groovy CPS DSL.
            3. A coworker of mine on a slightly older build (1.552) also reports that he gets the same error when attempting to use @Grab with the Build Flow Plugin (v 0.10).

            I have not contacted the reporter but am presuming this to be the same issue because I am getting the same error in what I presumed to be the same location (i.e. I interpret his reference to the "Groovy Script console" to be the same location as I referenced in #1 above.) I am not clear on what his original reference to "System Groovy Scripts" refers to but it seems to yet a forth location where @grab does not work.

            As to whether or not this is a single issue with a common root cause and solution or multiple issues that will each need their own resolution, I will defer to more knowledgable heads. However there already are several other tickets open about adding @Grab support to various plugins, etc: JENKINS-15512, JENKINS-16361, JENKINS-18400, JENKINS-18484. We just seem to be missing one for the new workflow plugin.

            I hope this helps.

            Show
            kbaltrinic Kenneth Baltrinic added a comment - - edited Perhaps I don't understand the terms clearly either so I will attempt to be a descriptive as possible. First this is with Jenkins v 1.592 which has the Hudson Groovy Builder 1.24 installed and all of the Workflow 1.0 plugins installed. In its earlier version Hudson Groovy Builder appears to have also been called the "Groovy Plugin." With this combination of components, @Grab works when using the "Execute Groovy script" option within a free-style job (this is what I meant above the "Groovy Plugin" and "Groovy build step".) To my knowledge this is the only place that it works. The locations I specifically have tried and confirmed not to work are: In the Groovy Console: Jenkins > Manage Jenkins > Script Console In workflow jobs, in the Workflow Definition when using Groovy CPS DSL. A coworker of mine on a slightly older build (1.552) also reports that he gets the same error when attempting to use @Grab with the Build Flow Plugin (v 0.10). I have not contacted the reporter but am presuming this to be the same issue because I am getting the same error in what I presumed to be the same location (i.e. I interpret his reference to the "Groovy Script console" to be the same location as I referenced in #1 above.) I am not clear on what his original reference to "System Groovy Scripts" refers to but it seems to yet a forth location where @grab does not work. As to whether or not this is a single issue with a common root cause and solution or multiple issues that will each need their own resolution, I will defer to more knowledgable heads. However there already are several other tickets open about adding @Grab support to various plugins, etc: JENKINS-15512 , JENKINS-16361 , JENKINS-18400 , JENKINS-18484 . We just seem to be missing one for the new workflow plugin. I hope this helps.
            Hide
            kbaltrinic Kenneth Baltrinic added a comment -

            I have added a separate ticket for the workflow plugin: JENKINS-26192

            Show
            kbaltrinic Kenneth Baltrinic added a comment - I have added a separate ticket for the workflow plugin: JENKINS-26192
            Hide
            jglick Jesse Glick added a comment -

            Would be wiser to do JENKINS-29068 first.

            Show
            jglick Jesse Glick added a comment - Would be wiser to do JENKINS-29068 first.
            Hide
            jglick Jesse Glick added a comment -

            Not a long-term solution, but I found a way in JENKINS-26192 to make it work in Pipeline global libraries which as a side effect makes it work throughout Jenkins (unless I go to special effort to suppress that).

            Show
            jglick Jesse Glick added a comment - Not a long-term solution, but I found a way in JENKINS-26192 to make it work in Pipeline global libraries which as a side effect makes it work throughout Jenkins (unless I go to special effort to suppress that).
            Hide
            jglick Jesse Glick added a comment -

            The issue here is that while Groovy bundles the Grape system, you need to have Ivy in the classpath for it to actually work. workflow-cps-global-lib bundles Ivy for this reasons, so other components could make use of Grape if they follow that class loader (or UberClassLoader). In JENKINS-26635 I had to add an optional dependency to the groovy plugin.

            Show
            jglick Jesse Glick added a comment - The issue here is that while Groovy bundles the Grape system, you need to have Ivy in the classpath for it to actually work. workflow-cps-global-lib bundles Ivy for this reasons, so other components could make use of Grape if they follow that class loader (or UberClassLoader ). In JENKINS-26635 I had to add an optional dependency to the groovy plugin.

              People

              Assignee:
              vjuranek vjuranek
              Reporter:
              emszpak Marcin ZajÄ…czkowski
              Votes:
              11 Vote for this issue
              Watchers:
              19 Start watching this issue

                Dates

                Created:
                Updated: