2017-08-18 1 views
1

Ich habe einen parametrisierten jenkins Job, der auf mein Plugin zugreift. Inside Plugin-Code in Java, benötige ich diese Parameter, mit denen ich einen anderen Job in Jenkins auslösen muss. Ich kann diese Parameter nicht abrufen und es ist jetzt ein Problem mit sehr hoher Priorität. Ich habe versucht, mehrere Lösungen auf Stackoverflow, zum Beispiel versucht, Zugriff auf die Umgebungsvariablen, aber nicht den Wert des Parameters erhalten. für beispielsweise meine Parameter ‚REPOS‘ ist und ich ihr Wert benötigen, habe ich versucht:Abrufen von Parametern aus einem jenkins-Job in Java-Code

System.getProperty("REPOS"); 

aber es gibt null zurück.

auch versucht:

Map<String, String> env = System.getenv(); 
       for (String envName : env.keySet()) { 
        System.out.format("%s=%s%n", envName, env.get(envName)); 
       } 

aber er druckt die Umgebungsvariablen jenkins und nicht die Parameter des Job.

Ich beziehe mich auf den Wert, der in dem Textfeld neben param: "url" im unteren Bild übergeben wird.

enter image description here

Bitte unterstützen.

Antwort

0

Danke für die Vorschläge, aber es funktionierte, als ich das folgende tat: ich die

JENKINS_HOST_URL/job/JENKINS_SEED_JOB_NAME/api/json?pretty=true 

getroffen und fand die aktuelle Build-Nummer, danach jenkins wieder mit dieser Nummer (JENKINS_HOST_URL/job/JENKINS_SEED_JOB_NAME/currBuildNum/api/json?pretty=true), Schlagen

Ich konnte alle in diesem Build übergebenen Parameter abrufen.

0

Soweit ich weiß, sind Jenkins-Parameter als Umgebungsvariablen verfügbar. Wenn Sie jedoch ein Build-System wie Maven verwenden, das Java-Subprozesse startet, werden diese Variablen möglicherweise nicht vererbt.

Wahrscheinlich ist Ihr zuverlässiger Ansatz explizit in Ihrem Jenkins Konfigurationsparameter als Systemeigenschaften passieren, zB -DREPOS=${REPOS}

+0

Hallo, vielen Dank für Ihre schnelle Antwort, aber erst nach dem Lesen dieses Parameters kann ich einen neuen Unterprozess starten. Daher ist es an erster Stelle erforderlich. Können Sie bitte erklären, wo und wie in Jenkins Konfiguration (für diesen bestimmten Job), muss ich den Befehl, den Sie vorgeschlagen haben, zur Verfügung stellen? – sonal

+0

Der Speicherort der Konfiguration in Jenkins hängt von der Art Ihres Builds ab. Wenn Sie beispielsweise Maven verwenden, enthält der Build-Schritt "Maven-Ziele auf höchster Ebene aufrufen" einen Textbereich "Eigenschaften". Welches Buildsystem Sie auch verwenden, es sollte einen Punkt geben, an dem Sie Befehlszeilenargumente angeben können. – ThrawnCA

0

Einer der Option dies zu erreichen, wird „PASS und als Argument GET“ in Ihrem Java-Code.

Jenkins 'Variablenwert kann wie folgt abgerufen werden.

urlValue=${url} 

Dann übergeben Sie diesen Wert in Java-Code. Dies wird Struktur Ihrer Shell in Job-Konfiguration ausführen.

#!/bin/bash -e 
urlValue=${url} 
# run java code 
java <classNameToRun> $urlValue 
+0

Dies ist wieder für die Weitergabe der Wert von Jenkins, aber das kann ich mit der Verwendung von Job. Aber ich möchte auf sie in meinem Java-Code zugreifen, dort brauche ich Hilfe. – sonal

+0

In Ihrem Java-Code sollten Sie den Wert in Ihrer Hauptfunktion erhalten können.zB: In public static void main (args []) können Sie Werte wie args [1], args [2] erhalten. – nagendra547

+0

Ich habe versucht, es auf dem Jenkins-Server auszuführen, aber es fragt nach einer Java-Datei. Wieder gab ich den Namen meiner Java-Datei, die in der Plugin-Entwicklung verwendet wurde, eine Fehlermeldung "Konnte Hauptklasse J.java nicht finden oder laden". Außerdem wird dieser Parameter von einem Post - Commit - Hook von SVN übergeben, der mir nur den URL - Parameter übergeben kann. – sonal

Verwandte Themen