Testen von Jenkins Jobs und Pipelines


10

Derzeit haben wir eine ganze Reihe von Jenkins-Jobs und -Pipelines für Builds, Tests, Bereitstellungen und andere automatisierte Aktivitäten.

Jedes Mal, wenn wir einen neuen Job ändern oder hinzufügen, testen wir ihn nur manuell - z. B. indem wir den "glücklichen Pfad" durchlaufen (wenn der Job fehlerfrei ausgeführt wird) und einige negative Testfälle testen, wenn ein Job oder eine Pipeline fehlschlägt Fehlercode und Benachrichtigungen.

Dieser Ansatz ist eindeutig nicht zuverlässig und lässt sich nicht gut skalieren. Wie können wir diesen Prozess verbessern? Gibt es einen Ort für Testautomatisierung, wenn es darum geht, die Funktionsweise von Jenkins-Jobs und -Pipelines zu überprüfen?


5
Willkommen bei hochrangigen Entwicklern - wer testet den Test? Ich denke, Sie könnten mit einer Sandbox-Umgebung beginnen, um allgemeine Systemeinstellungen zu replizieren und sie weiterzuentwickeln, um die Konfiguration als Code-Ansatz abzuschließen. Dies schließt Code-gepflegte Jobkonfigurationen ein.
Peter Muryshkin

Antworten:


10

Ich poste dies hier nicht, weil ich diese Lösungen unterstütze (tatsächlich habe ich sie nie ausprobiert), sondern nur, weil sie eine mögliche Antwort auf Ihre Frage sind:

Sie können mit JenkinsPipelineUnit beginnen , einem Unit-Test-Framework für Pipeline-Skripte.

Es gibt auch ein Projekt namens Jenkinsfile-Runner, das Ihre Jenkins-Datei in einer vorübergehenden, kopflosen Jenkins-Instanz ausführt. Angeblich kann dies zum Integrationstest von Jenkinsfiles und Pipeline Shared Libraries verwendet werden. Ab Sommer 2018 gibt es jedoch keine Dokumentation zur Verwendung dieses Tools für Integrationstests, und ich konnte keine Beispiele für Personen finden, die dieses Tool "in the wild" verwenden.

Siehe auch den zugehörigen Fehlerbericht zu Jenkins JIRA: "Testframework für Jenkinsfile" .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.