werfen Kann ich ein Problem mit meinem DSL-Job-Generator haben:nicht Objekt in Jenkins Job Generator
Processing DSL script seed.groovy
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object '[email protected]d60' with class 'com.dabsquared.gitlabjenkins.connection.GitLabApiTokenImpl' to class 'com.dabsquared.gitlabjenkins.connection.GitLabApiTokenImpl'
at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnSAM(DefaultTypeTransformation.java:405)
at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.continueCastOnNumber(DefaultTypeTransformation.java:319)
at org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation.castToType(DefaultTypeTransformation.java:232)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.castToType(ScriptBytecodeAdapter.java:603)
at com.blue.devops.generator.Generator$_closure1.doCall(Generator.groovy:28)
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:498)
ich einen DSL-Job-Generator leite die gitswarm API zugreifen, erhält die Informationen über die verfügbaren Projekte und deren Niederlassungen und schafft Jenkins Jobs.
Interaktion mit gitswarm api erfolgt über Client-Klasse - meine gitswarm API-Client.
Generator.groovy:
class Generator {
SystemCredentialsProvider systemCredentialsProvider = (SystemCredentialsProvider) Jenkins.instance.getExtensionList('com.cloudbees.plugins.credentials.SystemCredentialsProvider')[0]
CredentialsStore credentialsStore = (CredentialsStore) systemCredentialsProvider.getStore()
Domain domain = Domain.global()
List<Credentials> credentials = credentialsStore.getCredentials(domain)
Client client
Generator(String tokenId="gitswarm_token") {
credentials.each { Credentials credentials ->
if(credentials.getId() == tokenId) {
GitLabApiTokenImpl token = (GitLabApiTokenImpl) credentials //line 28
client = new Client(apiToken: token.getApiToken().getPlainText())
}
}
}
boolean generateJobs(DslFactory factory) {
ArrayList<Project> supportedProjects = client.getSupportedProjects()
supportedProjects.each { supportedProject ->
handleProject(supportedProject, factory)
}
return true
}
}
Jenkins läuft dieses DSL Samen Job:
import com.blue.devops.generator.Generator
new Generator().generateJobs(this)
Bitte helfen
danke :) Wir fanden heraus, dass das Problem der Classloader ist. Ich habe es so gelöst, dass ich nicht auf Klassen anderer Plugins zugreifen muss. –