Updates:

It might not be a good idea to use @grab in Jenkins pipeline script.

We also found an issue about this: 
https://issues.jenkins-ci.org/browse/JENKINS-48974, this will cause the 
parallel jobs which @grab the same direct/indirect dependencies failed.

It seems related to the groovy/ivy issue: 
https://issues.apache.org/jira/browse/GROOVY-7407. And it’s not fixed yet…
We also consider the way of @Library, but in the groovy lib, we still need 
@grab 3rd party lib, which is the same situation.

Anyway, we refactor the dependencies into a service and call rest api from 
the pipeline script, it seems working.

BR
Wei 

在 2018年10月8日星期一 UTC+2下午4:34:58,pan写道:
>
> Hi,
>
> I got an issue when using @grab.
> We are developing a jar and pipeline script to do the CI. We modify some 
> java code, deploy onto our internal Nexus server, use @grab in groovy to 
> fetch it to call the function.
> During developing, we found when we modify some code, deploy a new 
> SNAPSHOT version with the same version number of jar, sometimes the 
> pipeline script is not working.
>
> For example:
>
> @GrabResolver(name='Internal Nexus Snapshot', root='
>> https://internal.nexus.com/')
>> @Grab('some-package:some-artifact:0.0.1-SNAPSHOT')
>> import some.Utils
>> println new Utils()
>
>
> It works well, but if I deploy a new version to Nexus, it might fail, 
> unless I restart the Jenkins, then it will work again.
>
> error message:
>
> Running in Durability level: MAX_SURVIVABILITY
> org.codehaus.groovy.control.MultipleCompilationErrorsException: startup 
> failed:
> WorkflowScript: 1: unable to resolve class some.Utils
>  @ line 1, column 1.
>    @GrabResolver(name='Internal Nexus Snapshot', 
> root='https://internal.nexus.com/')
>    ^
>
> 1 error
>
>       at 
> org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:310)
>       at 
> org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:958)
>       at 
> org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
>       at 
> org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:554)
>       at 
> groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
>       at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
>       at groovy.lang.GroovyShell.parseClass(GroovyShell.java:688)
>       at groovy.lang.GroovyShell.parse(GroovyShell.java:700)
>       at 
> org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.doParse(CpsGroovyShell.java:131)
>       at 
> org.jenkinsci.plugins.workflow.cps.CpsGroovyShell.reparse(CpsGroovyShell.java:125)
>       at 
> org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.parseScript(CpsFlowExecution.java:560)
>       at 
> org.jenkinsci.plugins.workflow.cps.CpsFlowExecution.start(CpsFlowExecution.java:521)
>       at 
> org.jenkinsci.plugins.workflow.job.WorkflowRun.run(WorkflowRun.java:290)
>       at hudson.model.ResourceController.execute(ResourceController.java:97)
>       at hudson.model.Executor.run(Executor.java:421)
> Finished: FAILURE
>
>
>
> I think it might be some cache in Jenkins, because restart Jenkins will 
> fix it. But I can't find it.
> Does anyone have any clue about this?
> Thank you very much.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Jenkins Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/jenkinsci-users/9c0ce05c-5308-4a95-9529-af7d9331bfe2%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to