2016-04-15 3 views
-1

Ich bin neu in Jenkins Plugin-Entwicklung.
M versucht, ein Plugin zu schreiben, das ausgeführt werden sollte vor beliebig Multi-Konfiguration Typ Job läuft in Jenkins.
In diesem Plugin möchte ich Regeln schreiben, die überprüfen, welche Konfigurationsparameter Benutzer ausgewählt hat, während der Auftrag, basierend auf ausgewählten Parametern, möchte ich ermöglichen den Job ausführen oder um es einzuschränken.
Dem Benutzer sollte der Grund angezeigt werden, warum dieser Job nicht in der Konsolenausgabe ausgeführt werden kann.
Hat jemand irgendwelche Ideen, welche Klasse ich erweitern muss oder welche Schnittstelle ich implementieren muss, um einen Haken in Jenkins Joblauf zu bekommen?Jenkins Plugin-Code, der vor jeder Art von Job in Jenkins ausgeführt werden sollte

Antwort

1

Blocked queue job plugin war, was ich brauchte
Out of the box, die Plugin zwei Möglichkeiten unterstützt zu blockieren die Jobs -

  1. auf dem Ergebnis der letzten Ausführung eines anderen Projekts.

  2. Basierend auf Ergebnis der letzten Ausführung des laufenden Projekts

In dass Plugin die BlockQueueItemTaskDispatcher.java Jenkins QueueTaskDispatcher uns Logik einen Haken in Jenkins Bereitstellung erweitert die Jobs in der Warteschlange zu erlauben oder zu blockieren, vom Laufen.
Ich habe dieses Plugin als Ausgangspunkt für die Entwicklung eines neuen Plugins verwendet, mit dem wir das Projekt basierend auf ausgewählten Parametern und der aktuellen Zeit einschränken können. Ultimatives Ziel ist es, Produktionsmigrationen während des Tages zu verhindern.
Das Überschreiben der isBlocked() - Methode von QueueTaskDispatcher hat mir den Zugriff auf die hudson.model.Queue.Item-Instanz als Argument ermöglicht. Dann habe ich die getParams-Methode der Item-Instanz verwendet, um Zugriff auf Build-Parameter zu erhalten, die der Benutzer zur Laufzeit auswählt. Parsed den Lifecyle-Wert von ihm. Überprüfte die aktuelle Zeit. Wenn der Lebenszyklus Produktion war und die aktuelle Uhrzeit die Tageszeit war, wurde der Job eingeschränkt, indem nicht-null CauseOfBlockage von der isBlocked() -Methode zurückgegeben wurde. Wenn diese Bedingung falsch war, wurde reavedCauseOfBlockage als NULL zurückgegeben, damit der Job in der Warteschlange ausgeführt werden konnte.

1

Sie können sich die Matrix Execution Strategy anschauen, die ein grooviges Skript ermöglicht, um auszuwählen, welche Matrix-Kombinationen ausgeführt werden sollen. Ich würde denken, wenn Ihr Skript eine Ausnahme auslöst, würde es den Build stoppen.

Im Hintergrund führen die Multikonfigurationsprojekte einen Steuerauftrag (oder Fliehgewicht) aus, der die SCM-Phase ausführt und dann alle tatsächlichen Kombinationen startet. Dieses Plugin wird nach dem Flightweight SCM Checkout ausgeführt.

Wenn nichts anderes, das wird Sie ein funktionsfähiges Plugin geben aus starten

Disclaimer: Ich schrieb dieses Plugin

+0

Ich denke, dieses Plugin wird nicht hilfreich sein. Lassen Sie mich mein Problem erläutern. Es ist ein parametrisierter Build. Wahlparameter - Lebenszyklus (gültige Werte sind QA, QC, PROD), Kundenname (gültige Werte sind client1, client2) usw. Ich möchte die Produktions-Builds für ausgewählte Kunden zwischen 8:00 und 15:30 Uhr einschränken. Haben wir ein Plugin, mit dem ich Regeln so konfigurieren kann, dass ein Build für Client 2 zwischen 8.00 Uhr und 15.30 Uhr gesperrt werden muss?Erst nach 15.30 Uhr muss es in die Warteschlange gehen und dann ausführen. – user55926

+0

danke für die Hilfe @KeepCalmAndCarryOn – user55926

Verwandte Themen