# Hudson: Hilfe bei Sonar-Integration



## Jay_030 (24. Sep 2010)

Ich hoffe, ich finde hier jemanden, der ein ähnliches Problem hatte und eine Lösung parat hat.

Es geht um die Integration von Sonar in Hudson. Die Installation des Sonar Plugins hat bei Hudson problemlos funktioniert. Auch das Anstoßen des Maven-Jobs sonar:sonar regelt das Plugin angenehm automatisch. Ich bin damit schon sehr zufrieden.

Aber zu meinem Problem: Die zeitliche Steuerung vom Sonar Plugin. Die Entwickler von Sonar betonen ausdrücklich, dass es keinen Sinn macht, es öfter als einmal am Tag laufen zu lassen, da die "Time Machine" nur Werte pro Tag (und nicht pro Stunde, Minute usw.) anzeigen kann. Dies wollte ich beherzigen. Denn wozu unnötig den Server mit Berechnungen belasten, wenn es keinen Mehrwert generiert. Also wäre ein Nightly Build für Sonar ganz praktisch.

Auf meinem Server befinden sich jedoch ausschließlich Hobbyprojekte. Das heißt, alle paar Tage wird mal intensiv gearbeitet und wenn Sonne scheint länger nicht. Ein Nightly Build nur für Sonar, der Artefakte generiert, auch wenn es keine Änderung gab, ist daher irgendwie verbose - auch unnötige Builds.

Was ich suche, ist also eine Möglichkeit zusätzlich zum Abfragen des SVNs (alle 15 Minuten), was den normalen Build-Prozess startet, einen extra Trigger für die Post-Build Action sonar einzurichten. Dieser sollte einmal am Tag im Repository nach Änderungen schauen und Sonar starten, wenn es welche gab.

Die einfachste Möglichkeit wäre ein gesonderter Job für Sonar. Aber das wollten die Macher des Plugins ja gerade verhindern. Ich möchte auch nicht pro Projekt einen zusätzlichen Sonar-Job einrichten - Faulheit.

Vielleicht kennt jemand eine Lösung. *hope*


----------



## maki (24. Sep 2010)

Hab Sonar jetzt länger nicht genutzt, wird aber bald wieder relevant.

Meine Maven2 Bulds in Hudson splitte ich pro Projekt auf, sodass ich pro Projekt 2 Jobs habe:
Einer der SVN pollt (alle 15 Min.) und bei Änderungen baut, und dann noch einer, der nur nachts einmal läuft und die Site generiert (inkl. Analyse), bei letzterem dürfte Sonar auch mitbauen.


----------



## Jay_030 (24. Sep 2010)

Ok, die Maven-Seite nur beim Nightly Build generieren zu lassen und dann den Sonar-Job mitlaufen zu lassen, ist auch eine gute Idee. Wenn ich den Nightly Build so gestalte, dass nächtlich das Repository gepollt wird, läuft dieser auch nur bei etwaigen Änderungen durch. Aber wie gesagt, eigentlich wollten die Macher des Sonar-Plugins dieses "ein Job extra für Sonar" unterbinden. Nur leider sehe ich keine andere Lösung.


----------



## bygones (24. Sep 2010)

Jay_030 hat gesagt.:


> s dieses "ein Job extra für Sonar" unterbinden. Nur leider sehe ich keine andere Lösung.


wo hast du denn das her ?

Bei uns laeuft auch 1x in der nacht der komplette build mit allen maven schnickschnack (site) inklusive sonar.


----------



## Jay_030 (24. Sep 2010)

Das habe ich aus diesem Blog-Eintrag von der Herstellerseite.


			
				Sonar Blog hat gesagt.:
			
		

> Trigger Sonar only by the scheduler
> On the contrary of continuous integration, it is not appropriate to run Sonar analysis at every commit on a project. As mentioned in the past, a weekly analysis seems a good frequency, but anything between daily and monthly is fine. So far, you needed two jobs in Hudson to do so : one for continuous integration and one for triggering Sonar. That was a shame because the configuration of both jobs was pretty similar. So we added an option in the plugin to not run Sonar when the job was trigger by polling the SCM.


Aber ich finde die Umsetzung noch verbesserungswürdig. Bzw. glaube ich, ich werde mal einen Feature Request formulieren: Eine Checkbox hinzufügen unter der Aktivierungsbox, über die man festlegen kann, dass ein Sonarjob nicht häufiger als einmal pro Tag, Woche oder Monat durchlaufen soll. Dann kann man Sonar im normalen Maven-Job laufen lassen ohne unnötige Berechnungen, die dann eh nicht in der Time Machine Beachtung finden.


----------

