2016-05-23 10 views
0

Ich versuche, benutzerdefinierte Ursachen für Jenkins-Builds mit der jenkins api festlegen.Wie Sie benutzerdefinierte Build-Ursache für invoke() in Python JenkinsAPI setzen

Die jenkins api verfügt über eine invoke()-Methode zum Aufrufen neuer Builds, die den cause-Parameter empfängt.

# this is a jenkinsapi.Job method 
invoke(self, securitytoken=None, block=False, 
      build_params=None, cause=None, files=None, delay=5): 

Der cause param mit wie folgt behandelt:

if cause: 
     build_params['cause'] = cause 

Ich versuche, herauszufinden, welches Format zu verwenden, wenn Sie eine benutzerdefinierte Ursache definieren. Um dies zu tun, habe ich zuerst die Ursache eines Builds extrahiert, um zu sehen, wie es aussieht mit jenkinsapi.Build Methode get_causes().

Dies ist eine Liste von Wörterbüchern liefert, wie erwartet (nur 1 Ursache), Beispiel:

[{'shortDescription': 'description of cause', 
    'userId': 'userid', 
    'userName': 'username'}] 

Mit diesem Wissen habe ich versucht rufenden während cause als eine Liste von Wörterbüchern in dem gleichen Format spezifiziert aufbaut, aber dies funktionierte nicht, nach dem Sammeln der Ursachen von diesem neuen Build, war nur der normale Grund dafür da.

Also, meine Frage ist, was muss ich tun, um eine benutzerdefinierte Ursache zu erstellen?

Antwort

1

Ich habe zwei Möglichkeiten gefunden, die benutzerdefinierte Ursache hinzuzufügen, aber nur eine Möglichkeit, die mit der Jenkin-API funktioniert. Ich hoffe immer noch, dass es eine alternative Lösung gibt.

Um die benutzerdefinierten cause Einstellung erhält ich in jedem Jenkin Job diese Einstellung aktivieren arbeiten musste:

enter image description here

Nach der Aktivierung dieser Einstellung konnte ich löst den Job mit einer benutzerdefinierten Ursache, die würde in der Konsole angezeigt werden.

job.invoke(securitytoken="asecuretoken", cause="A custom cause.") 

Das Hauptproblem ich mit dieser Strecke ist, dass es nicht die Menge an Informationen, die ich von benutzerdefinierten Plugins sieht ausfüllen. Das ist die Alternative, die ich gefunden habe, um die Ursache auf diese Weise zu verwenden, aber es erfordert mehr Arbeit zu implementieren.

Ich habe ein gutes Beispiel gefunden, das die Build-Nachrichten basierend auf einer REST-Anfrage ist die GitLab Jenkin's Plugin.