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
Blocked queue job plugin war, was ich brauchte
Out of the box, die Plugin zwei Möglichkeiten unterstützt zu blockieren die Jobs -
auf dem Ergebnis der letzten Ausführung eines anderen Projekts.
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.
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
- 1. Lauf Jenkins Job sofort
- 2. Start jenkins job sofort nach der Erstellung von Seed Job
- 3. YAML - Jenkins Job Builder
- 4. Jenkins-Job schlägt fehl
- 5. Jenkins-Job gleichzeitig aufteilen
- 6. Trigger Jenkins Job von Jira auf Anfrage
- 7. Einen Job in jenkins umbenennen
- 8. Jenkins Job Builder - Automatische Pipeline Job
- 9. machen Jenkins (Hudson) Job hängen von einem anderen Job
- 10. Jenkins Job Builder: Projektebene Variablen
- 11. Listenansicht von Pipelineansichten in Jenkins
- 12. Jenkins External-Monitor-Job-Setup
- 13. Vagrant abgebrochen am Ende von Jenkins Job
- 14. Wie gelöschte Jenkins Job abrufen?
- 15. Jenkins EnvInject Plugin + Pipeline-Job
- 16. Jenkins REST API Job erstellen
- 17. Jenkins-Job zum Abrufen von Daten aus der Datenbank und Anzeigen in jenkins
- 18. Jenkins, Cron-Ausdruck, sollte ein Job nicht 15,00-16,00
- 19. Wo sollte ich gradle.properties in Jenkins setzen
- 20. Jenkins-Workflow-Job: Parameter als Zweigspezifizierer verwenden
- 21. Einen Job nach der manuellen Genehmigung in Jenkins starten
- 22. Anzeigen von benutzerdefinierten Testergebnissen in Jenkins Maven Job
- 23. Parametrisierte Job mit Pipeline-Plugin auf Jenkins
- 24. Wie Passwörter in der Jenkins-Konsolenausgabe auszublenden?
- 25. Jenkins hängen mit Gebäude Maven Job
- 26. Wie überschreiben build.gradle mit Jenkins Job
- 27. Unterstützt jenkins job dsl plugin "Parameterfilter"?
- 28. Veröffentlichen Sie versuchen Code in Jenkins vor dem Commit
- 29. Jenkins Projekt generiert von Job DSL wird nicht ausgelöst.
- 30. URL erhält von Job in Mail-Körper in Jenkins
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
danke für die Hilfe @KeepCalmAndCarryOn – user55926