问题
I am trying to gather data from jenkins using groovy script and getting an error:
unable to resolve class com.cloudbees.hudson.plugins.folder.Folder
Below is the code:
import jenkins.model.*
import hudson.model.*
import groovy.time.TimeCategory
use ( TimeCategory ) {
// e.g. find jobs not run in last 1 year
sometimeago = (new Date() - 1.year)
}
jobs = Jenkins.instance.getAllItems()
lastabort = null
jobs.each { j ->
if (j instanceof com.cloudbees.hudson.plugins.folder.Folder) { return }
numbuilds = j.builds.size()
if (numbuilds == 0) {
println 'JOB: ' + j.fullName
println ' -> no build'
return
}
lastbuild = j.builds[numbuilds - 1]
if (lastbuild.timestamp.getTime() < sometimeago) {
println 'JOB: ' + j.fullName
println ' -> lastbuild: ' + lastbuild.displayName + ' = ' + lastbuild.result + ', time: ' + lastbuild.timestampString2
}
}
The error is:
rg.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: Script1.groovy: 12: unable to resolve class com.cloudbees.hudson.plugins.folder.Folder @ line 12, column 20. if (j instanceof com.cloudbees.hudson.plugins.folder.Folder) { return } ^ 1 error at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:302)
回答1:
I see Folder.java in jenkinsci/cloudbees-folder-plugin.
That means you need to:
- check if you do have JENKINS/CloudBees Folders Plugin installed, or your groovy script would not be able to resolve that dependency.
- Add "
import com.cloudbees.hudson.plugins.folder.*
" to be sure the script is able to make theinstanceOf
work.
来源:https://stackoverflow.com/questions/43459580/unable-to-resolve-class-com-cloudbees-hudson-plugins-folder-folder