2016-11-07 1 views
1

Ich bin neu zu groovy und derzeit versuche, meine Teams Jenkins Server von 1,6 bis 2,7 zu ​​aktualisieren. Einer der Teile, die ich migrieren muss, ist der Job DSL, den wir in der Versionskontrolle haben.Groovy Hilfe finden fehlende Paket: com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials Paket nicht gefunden, Jenkins Job DSL-Plugin

auf dem neuen Server, wenn ich versuche, die alten Job DSL ich die unten Fehlermeldung erhalten, laufe:

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: 
/apps/Jenkins/workspace/DSL-infrastructure/shared/Shared.groovy: 10: Apparent variable 'com' was found in a static scope but doesn't refer to a local variable, static field or class. Possible causes: 
You attempted to reference a variable in the binding or an instance variable from a static context. 
You misspelled a class name or statically imported field. Please check the spelling. 
You attempted to use a method 'com' but left out brackets in a place not allowed by the grammar. 
@ line 10, column 17. 
     def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
       ^

Grundsätzlich denke ich, das Problem ist, dass das fetzige Skript nicht die com.cloudbees finden ... Paket. Abschnitt

Das Shared.groovy Skripts:

static def getCred(partialName) { 
    def creds = com.cloudbees.plugins.credentials.CredentialsProvider.lookupCredentials(
     com.cloudbees.plugins.credentials.common.StandardUsernameCredentials.class, 
     jenkins.model.Jenkins.instance, 
     null, 
     null 
    ) 
    creds.find { it.description.contains(partialName) } 
    } 

ich gesucht hoch und niedrig und kann nicht für das Leben von mir herauszufinden, warum oder wie man dieses fehlenden Paket Problem zu beheben. Es wird kompliziert, wenn ich Jenkins im Apache-Kater renne.

Ich bin mir nicht sicher, wie Sie dieses fehlende Paket in einen Apache Tomcat Server mit Jenkins importieren? Ich fand die .jar-Datei im Verzeichnis:

/apps/jenkins/plugins/credentials/WEB-INF/lib/credentials.jar 

Die spezifische Klasse I Referenz bin versucht:

https://github.com/jenkinsci/credentials-plugin/blob/master/src/main/java/com/cloudbees/plugins/credentials/CredentialsProvider.java

jede Hilfe wäre sehr sein

geschätzt

Antwort

0

Seit der Version 1.43 des Job-DSL-Plugin, Klassen aus den Credentials-Plugins sind in DSL-Skripten nicht mehr verfügbar. Sie haben wahrscheinlich auch das Job DSL-Plugin aktualisiert, wenn Sie Jenkins aktualisieren.

Version 1.21+ der Credentials plugin ermöglicht benutzerdefinierte IDs für Anmeldeinformationen anzugeben, so dass es nicht erforderlich sein sollte, Anmeldeinformationen nach Beschreibung zu finden. Verwenden Sie stattdessen eine beschreibende ID.

+0

Danke für die Antwort daspilker. Ich hatte das Gefühl, ich müsste den Job DSL neu schreiben. Ich werde es versuchen und meine Antwort hier posten, wenn ich mir eine ausspreche. –

+0

Können Sie ein Beispiel zeigen, wie es nur mit dem Credentials-Plugin funktioniert? – misha

0

Ein Ansatz besteht darin, das Credential Binding Plugin zu verwenden, das erlaubt, bereits definierte Jenkins globale credentials zu verwenden, wie von daspilker vorgeschlagen. Unten sehen Sie ein Beispiel für einen Job, der die Ordnerstruktur von einer SVN-URL auflistet (ähnlich wie bei anderen Repos). Beachten Sie, dass Sie das Geheimnis verketten müssen, mit einem Formatierer wird es maskieren und es wird nicht erkannt (unter dem Benutzer wurde zur Vereinfachung nicht verkettet).

Jenkins Secrets

Verwandte Themen