Ich weiß, Sie wahrscheinlich nicht mehr dabei helfen müssen, aber ich hatte gerade das gleiche Problem zu lösen, so ist hier ein Skript, das Sie in der Jenkins-Konsole Ausgabe aller Trigger-Konfigurationen verwenden können:
#!groovy
Jenkins.instance.getAllItems().each { it ->
if (!(it instanceof jenkins.triggers.SCMTriggerItem)) {
return
}
def itTrigger = (jenkins.triggers.SCMTriggerItem)it
def triggers = itTrigger.getSCMTrigger()
println("Job ${it.name}:")
triggers.each { t->
println("\t${t.getSpec()}")
println("\t${t.isIgnorePostCommitHooks()}")
}
}
Dadurch werden alle Ihre Jobs ausgegeben, die die SCM-Konfiguration verwenden, zusammen mit ihrer Spezifikation (cron-ähnlicher Ausdruck, wann sie ausgeführt werden soll) und ob Hooks nach dem Commit ignoriert werden sollen.
Sie können dieses Skript ändern, um die Daten als JSON wie folgt zu erhalten:
#!groovy
import groovy.json.*
def result = [:]
Jenkins.instance.getAllItems().each { it ->
if (!(it instanceof jenkins.triggers.SCMTriggerItem)) {
return
}
def itTrigger = (jenkins.triggers.SCMTriggerItem)it
def triggers = itTrigger.getSCMTrigger()
triggers.each { t->
def builder = new JsonBuilder()
result[it.name] = builder {
spec "${t.getSpec()}"
ignorePostCommitHooks "${t.isIgnorePostCommitHooks()}"
}
}
}
return new JsonBuilder(result).toPrettyString()
Und dann können Sie die Jenkins Script Console web API verwenden diese von einem HTTP-Client zu erhalten.
Zum Beispiel in curl, können Sie dies tun, indem Sie Ihr Skript als Textdatei speichern und dann ausgeführt wird:
curl --data-urlencode "script=$(<./script.groovy)" <YOUR SERVER>/scriptText
Wenn Jenkins grundlegende Authentifizierung verwenden, können Sie das mit dem -u <USERNAME>:<PASSWORD>
Argumente liefern können .
Letztendlich wird die Anfrage in etwa wie folgt ergeben:
{
"Build Project 1": {
"spec": "H/30 * * * *",
"ignorePostCommitHooks": "false"
},
"Test Something": {
"spec": "@hourly",
"ignorePostCommitHooks": "false"
},
"Deploy ABC": {
"spec": "H/20 * * * *",
"ignorePostCommitHooks": "false"
}
}
Sie sollten diese Beispiele zuzuschneiden der Lage sein, Ihren spezifischen Anwendungsfall anzupassen. Es scheint, dass Sie nicht aus der Ferne darauf zugreifen müssen, sondern nur von einem Job aus, aber ich habe auch den Remoting-Teil hinzugefügt, da er für jemand anderen nützlich sein könnte.
Ich hatte eine ähnliche Idee vor, aber ich habe aufgegeben, weil ich nicht System groovy Skripte von einer Slave-Maschine ausführen kann, und die Build-Umgebung ist unter strenger Kontrolle. – Heinz
In meiner Firma habe ich eine Extraschicht zwischen dem Endbenutzer und der Skriptkonsolen-API erstellt. Es gibt ein System, das solche Groovy-Skripte speichert, sie sind vom Administrator genehmigt, und es gibt eine Web-API, die es Benutzern erlaubt, sie über dieses System auszuführen (der Inhalt des Skripts wird abstrahiert). In Jenkins-Pipelines können Benutzer diese intermediate-API über eine HTTP-Anfrage auslösen, zum Beispiel über https://wiki.jenkins.io/display/JENKINS/HTTP+Request+Plugin. Es ist sicherlich ein Overhead bei der Wartung eines solchen Tools, aber es lohnt sich so weit, da es eine einmalige Anstrengung war. – JohnSomeone