2017-03-31 2 views
0

Unser Build-Prozess umfasst Git, Gerrit und Jenkins. Wenn ein Jenkins-Build defekt ist, muss jemand die letzten Commits analysieren und den einzelnen Committern die Fixierungsaufgabe zuweisen. Alle Entwickler mit Commits seit dem letzten Stable-Build erhalten auch eine E-Mail, aber das sagt einfach "Build ist kaputt".Automatisierte Beschuldigung für zerbrochenen Build in Jenkins

Mit etwas maschinellem Lernen scheint es möglich zu sein, dass der Committer "höchstwahrscheinlich" einen Testfehler verursacht hat. Sagen wir, ich habe zwei Commits seit der letzten stabilen Aufbau

Commit abcdef by Bob 
Working on database reset logic 
awesome-project/src/main/java/com/foobar/database/Reset.java 
awesome-project/src/test/java/com/foobar/database/ResetTest.java 

Commit abcdef by Fred 
Add new VAT codes for Delaware 
awesome-project/src/main/java/com/foobar/finance/VatTable.java 
awesome-project/src/main/java/com/foobar/finance/VatLogicForDelawreImpl.java 
awesome-project/src/test/java/com/foobar/statescenarios/DelawareTest.java 

Und jetzt ist es ein Build Ausfall

Stacktrace 
java.lang.AssertionError: Expected <6> but was <7> 
at com.foobar.finance.VatTableTest() 

Gibt es ein Plugin gibt, die Fred Schuld wird nicht der VatTableTest aktualisiert haben nach einer neuen Zugabe Mehrwertsteuerzeile für Delaware? Von diesem StackTrace-Klassen, Fehlermeldung mit Commit-Nachricht und commited-Dateien kombiniert scheint es, dass sollte möglich sein (Ich würde gerne akzeptieren, "die folgenden Fehler konnten nicht zu einem bestimmten Festschreiben zugewiesen werden")

Danke, Simon

+0

Vorbeugen ist besser als heilen. Merge Request Builds lösen dieses Problem mit gitlab/github. Sie erstellen, führen Tests vor dem Zusammenführen durch. Ich weiß nicht, wie es in Gerrit funktioniert. Verwenden Sie Gerrit für die Code-Überprüfung und können Sie ändern, dass Sets separat erstellt werden. – Vishwanath

+0

Machine Learning zu prognostizieren, welche Commit den Build brach? Komm schon. Kannst du nicht einfach eine 'git bisect'-Sitzung erstellen, um das erste Commit zu finden, das nicht erstellt wird, und davon ausgehen, dass der Autor des Commits dort ist, wo die Recherche beginnen soll? –

+0

@ Vishwanath, haben wir Gerrit Build-Verifikation an Ort und Stelle. Es gibt immer noch viele Build-Schritte nach dem Zusammenführen, die scheitern können und müssen. UI-Tests sind ein Hotspot. – Simon

Antwort

0

Vorerst werden wir mit der E-Mail-ext-Plugin und es ist Optionen an:

  • Schuldige (dh alle Committer seit dem letzten Erfolg baut auf dem Changelog)
  • Suspects wodurch die Build beginnen zu scheitern (dh Committer auf dem Changelog des ersten geborsten Build)
Verwandte Themen