Groovy jest zdecydowanie najlepszą metodą zbiorczego aktualizowania zadań. Być może będziesz musiał trochę zagłębić się w interfejsie jenkins/plugin, aby dowiedzieć się, do czego służy wywołanie api, ale konsola skryptowa (http://yourJenkinsUrl/script) zapewnia łatwy sposób na obejście kodu, dopóki nie zostanie poprawiony.
Aby rozpocząć, można dodawać/usuwać etapy post-build, wywołując metodę getPublishersList()
dla zadania, a następnie wywołując metody dodawania/usuwania.
def publishersList = Jenkins.instance.getJob("JobName").getPublishersList()
publishersList.removeAll { it.class == whatever.plugin.class }
publishersList.add(new PluginConstructor())
Jeśli nie jesteś pewien, co klasa wydawca trzeba usunąć obszar roboczy, chciałbym zaproponować ręcznie dodając żądane konfiguracje do jednego zadania, a następnie uruchomić getPublishersList()
z konsoli skryptu na tej pracy. Na liście zobaczysz klasę, z którą pracujesz, a następnie możesz przejrzeć api, aby zobaczyć, co jest potrzebne do jego zbudowania.
Następnie można wykonać iterację wszystkich swoich zadań i dodać wydawcy robią coś takiego:
Jenkins.instance.getView("All Jobs").items.each { job ->
//Maybe some logic here to filter out specific jobs
job.getPublishersList().add(new PluginConstructor())
}
Alternatywnie, można użyć API Jenkins CLI lub interfejsu API REST, ale w celu aktualizacji pokompilacyjnych działania, będziesz musiał zmodyfikować plik xml konfiguracji projektu (który nie jest trywialnie programowo konfigurowany), a następnie zastąpić konfigurację zadania nowym plikiem konfiguracyjnym.
Nie jestem pewien, czy to ma wystarczająco dużo opcji, ale użyłem wtyczki Jobcopy Builder w przeszłości, aby zrobić coś podobnego, możesz użyć tego do skopiowania zadań i określenia ciągów do znalezienia i zamiany w konfiguracji – iestync
Jeśli są to konfiguracje automatycznie generowanych zadań, możesz przejść do $ Jenkins_Home/jobs na swoim master i string-replace-add, co potrzebujesz. Użyłem go do zmiany wszystkich konfiguracji jdk dla wszystkich zadań zaczynających się od Master- *, całkiem łatwo zrobić to w skrypcie powłoki. – Dvir669