Jenkins mit Lazarus
Jenkins mit Lazarus
Hallo zusammen
Wollte schon lange mal meine Projekte auf einem Server mit Continous Integration einer höheren Qualität zuwidmen.
Hat von euch schon jemand Erfahrung mit Jenkins und Lazarus also FPC? Oder mit anderen Ci Systemen?
Danke für Antworten
Wollte schon lange mal meine Projekte auf einem Server mit Continous Integration einer höheren Qualität zuwidmen.
Hat von euch schon jemand Erfahrung mit Jenkins und Lazarus also FPC? Oder mit anderen Ci Systemen?
Danke für Antworten
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Jenkins mit Lazarus
Hi, habe es hier im Einsatz. Allerdings noch lange nicht so wie ich es mir wünsche. Automatisches Build klappt schon, auch starten der Tests aber die Ergebnisse der Tests werden dann per Mail versendet und nicht automatisches ausgewertet. Ich glaube, dass man dazu ein eigenes Plugin schreiben müsste. Aus Zeitmangel habe ich mich aber bisher noch nicht damit beschäftigt.
Meine Umgebung ist: Windows 7, Lazarus 1.0.4, Subversion, fpcunit und Jenkins 1.499.
Einrichtung hat vielleicht zwei Stunden gedauert.
Meine Umgebung ist: Windows 7, Lazarus 1.0.4, Subversion, fpcunit und Jenkins 1.499.
Einrichtung hat vielleicht zwei Stunden gedauert.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 20
- Registriert: Fr 23. Mai 2008, 00:29
- OS, Lazarus, FPC: Windows|Linux (L 3.8.0 FPC 3.2.2)
- CPU-Target: Intel
- Wohnort: Münster
- Kontaktdaten:
Re: Jenkins mit Lazarus
Habe Jenkins (bzw. Hudson) in Verbindung mit Free Pascal und Lazarus sehr erfolgreich im Einsatz. Wobei ich das weniger für automatische Tests als für ein kontinuierliches Deployment verwende, also auschecken, compilieren und die Ergebnisse weiterreichen. Damit wird sichergestellt, das sich wirklich jedes Projekt im SVN sauber für seinen Zweck compilieren lässt. Habe damit gute Erfahrungen gemacht und kann den Einsatz nur empfehlen. Die Installation (Windows oder Linux) ist perfekt einfach.
Umgebung(en): Hudson 3.0.0, SVN 1.7, fpc 2.0.4 bis 2.7.1, Lazarus 1.1 (trunk), Windows XP, Ubuntu 12.04 32bit, Ubuntu 12.04 64bit.
Umgebung(en): Hudson 3.0.0, SVN 1.7, fpc 2.0.4 bis 2.7.1, Lazarus 1.1 (trunk), Windows XP, Ubuntu 12.04 32bit, Ubuntu 12.04 64bit.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Jenkins mit Lazarus
Jetzt habe ich mich angeregt durch diese Diskussion noch mal genauer mit den Tests auseinander gesetzt. Und siehe da: Das xUnit-Plugin enthält eine Unterstützung für FPC-Unit. Entweder ist das neu hinzugekommen oder ich war damals zu dusselig das zu sehen.m.fuchs hat geschrieben:Automatisches Build klappt schon, auch starten der Tests aber die Ergebnisse der Tests werden dann per Mail versendet und nicht automatisches ausgewertet. Ich glaube, dass man dazu ein eigenes Plugin schreiben müsste. Aus Zeitmangel habe ich mich aber bisher noch nicht damit beschäftigt.
Wie dem auch sei: Plugin installiert, Projektkonfiguration erweitert und schon wertet Jenkins auch die Ergebnisse der Unittests aus. Perfekt.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Jenkins mit Lazarus
Sehr Cool! Werde mich am Wochenende mal dahinter klemmen 
Noch für alle, im Lazarus Wiki gibts einen nützlichen Link:
http://wiki.lazarus.freepascal.org/Jenkins

Noch für alle, im Lazarus Wiki gibts einen nützlichen Link:
http://wiki.lazarus.freepascal.org/Jenkins
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable
Re: Jenkins mit Lazarus
Hallo,
das ist genau das Thema womit ich mich seit Tagen beschäftige und einfach keinen Einstieg - zumindest keine vernünftigen - finde.
da Thema was mich umtreibt ist folgendes:
- ich steige in ein Projekt ein was folgendes zum Ziel hat:
- das Projekt startet bei "0" - d.h. vieles ist möglich
- Umgebung: Windows Server und AIX Power Systeme
- ca. 100 Batch/VBA/bash Skripte - keine GUI Apps
Aufgabe:
- die Skripte sollen alle standardisiert werden - angelehnt an Clean Code Rules
- das ganze findet in einem Industrieunternehmen statt - also keine Spielwiese
mein angestrebter Lösungsweg:
- ich möchte mich an der DEVOPS Philosophie orientieren
- die Umgebung möchte ich mit folgenden Komponenten aufbauen: GIT/SVN; BuildTool/DeploymentTool Jenkins oder ??; Artefakt Repository wenn nötig
- nach der Erstellung eines Skripts sollen automatisiert Test stattfinden die dann, letztendlich, auf den Produktivsystemen landen
mein größtes Problem:
- wie implementiere ich Tests im Main Code bzw. wie baue ich überhaupt einen TestCase auf - klar ist mir auch erst einmal Testfälle aufzustellen
Fazit/Fragen:
ich glaube das ich nicht der einzige bin der einen Einstieg in dieses Thema sucht...
wie ist die logische Herangehensweise um das umzusetzen
wie sehen eure Umgebungen aus
was ist zu beachten
Ziel dieser Diskussion:
das Chaos in meinem Kopf strukturieren
viele Grüße
das ist genau das Thema womit ich mich seit Tagen beschäftige und einfach keinen Einstieg - zumindest keine vernünftigen - finde.
da Thema was mich umtreibt ist folgendes:
- ich steige in ein Projekt ein was folgendes zum Ziel hat:
- das Projekt startet bei "0" - d.h. vieles ist möglich
- Umgebung: Windows Server und AIX Power Systeme
- ca. 100 Batch/VBA/bash Skripte - keine GUI Apps
Aufgabe:
- die Skripte sollen alle standardisiert werden - angelehnt an Clean Code Rules
- das ganze findet in einem Industrieunternehmen statt - also keine Spielwiese
mein angestrebter Lösungsweg:
- ich möchte mich an der DEVOPS Philosophie orientieren
- die Umgebung möchte ich mit folgenden Komponenten aufbauen: GIT/SVN; BuildTool/DeploymentTool Jenkins oder ??; Artefakt Repository wenn nötig
- nach der Erstellung eines Skripts sollen automatisiert Test stattfinden die dann, letztendlich, auf den Produktivsystemen landen
mein größtes Problem:
- wie implementiere ich Tests im Main Code bzw. wie baue ich überhaupt einen TestCase auf - klar ist mir auch erst einmal Testfälle aufzustellen
Fazit/Fragen:
ich glaube das ich nicht der einzige bin der einen Einstieg in dieses Thema sucht...

wie ist die logische Herangehensweise um das umzusetzen
wie sehen eure Umgebungen aus
was ist zu beachten
Ziel dieser Diskussion:
das Chaos in meinem Kopf strukturieren


viele Grüße
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Jenkins mit Lazarus
Hallo,
das ist ja schon mal ein ganz schöner Brocken. Ich versuche mal auf einige Punkte einzugehen.
Und: Schaffe eine Spielwiese. Die Teammitglieder müssen Gelegenheit haben sich und die neuen Arbeitsmethoden auszuprobieren.
Inwiefern man mit den Skriptsprachen vernünftige Unittests machen kann, kann ich auch nicht sagen.
Das war erst einmal eine grobe Antworte. Vielleicht kannst du deine Fragen noch etwas spezifizieren.
BTW: Wenn das Projekt erst noch angefangen wird, kannst du ja vielleicht die Wahl der Sprachen noch einmal überdenken. Batchdateien und Shellskripte sind nicht gerade die Spitze der Programmiersprachen. Ich kann mir vorstellen, dass Clean Code damit schwierig wird. Ich habe inzwischen fast alle Shellskripte durch FPC-Programme ersetzt. Die deutlich höhere Qualität ist mir ein wenig Mehraufwand (und selbst der ist ja nur gefühlt) wert.
hth
Micha
das ist ja schon mal ein ganz schöner Brocken. Ich versuche mal auf einige Punkte einzugehen.
Stell gemeinsam mit dem Team Coding-Styles für dieses Projekt auf und haltet die schriftlich fest. Setze eine Person als Style-Wächter ein, der die Einhaltung der Richtlinien überwacht. Je nach Umfang des Projektes/Teams können das auch mehrere machen.mtbf40 hat geschrieben:- die Skripte sollen alle standardisiert werden - angelehnt an Clean Code Rules
Hol die Geschäftsführung mit ins Boot. Die neuen Regelungen sollten "von oben" abgesegnet sein.mtbf40 hat geschrieben:- das ganze findet in einem Industrieunternehmen statt - also keine Spielwiese
Und: Schaffe eine Spielwiese. Die Teammitglieder müssen Gelegenheit haben sich und die neuen Arbeitsmethoden auszuprobieren.
Orientiere dich an deinem gesunden Menschenverstand. DevOps ist auch nur so ein Schlagwort, von dem jeder denkt dass es etwas anderes bedeutet. Tatsächlich interessant ist nur eines: die Leute die das Zeug entwickeln, müssen mit denen reden, die das Zeug bedienen.mtbf40 hat geschrieben:- ich möchte mich an der DEVOPS Philosophie orientieren
Jenkins ist "nur" das Continuous Integration System. Das Deployment musst du selber gestalten, es kann aber durch Jenkins dann angetriggert werden.mtbf40 hat geschrieben:- die Umgebung möchte ich mit folgenden Komponenten aufbauen: GIT/SVN; BuildTool/DeploymentTool Jenkins oder ??; Artefakt Repository wenn nötig
Das ist dann Jenkins Aufgabe. Es reagiert auf den den Commit im SVN/GIT, baut die Quellen, führt die Tests aus und wertet deren Ergebnisse aus.mtbf40 hat geschrieben:- nach der Erstellung eines Skripts sollen automatisiert Test stattfinden die dann, letztendlich, auf den Produktivsystemen landen
Zuerst einmal solltest du gescheite Testwerkzeuge finden. Für VBA kenne ich nix, für Batch passt vielleicht https://bitbucket.org/percipio/cmdunit und bash wird durch https://code.google.com/p/shunit2/ abgedeckt.mtbf40 hat geschrieben:- wie implementiere ich Tests im Main Code bzw. wie baue ich überhaupt einen TestCase auf - klar ist mir auch erst einmal Testfälle aufzustellen
Inwiefern man mit den Skriptsprachen vernünftige Unittests machen kann, kann ich auch nicht sagen.
Das war erst einmal eine grobe Antworte. Vielleicht kannst du deine Fragen noch etwas spezifizieren.
BTW: Wenn das Projekt erst noch angefangen wird, kannst du ja vielleicht die Wahl der Sprachen noch einmal überdenken. Batchdateien und Shellskripte sind nicht gerade die Spitze der Programmiersprachen. Ich kann mir vorstellen, dass Clean Code damit schwierig wird. Ich habe inzwischen fast alle Shellskripte durch FPC-Programme ersetzt. Die deutlich höhere Qualität ist mir ein wenig Mehraufwand (und selbst der ist ja nur gefühlt) wert.
hth
Micha
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Jenkins mit Lazarus
danke erst einmal an m.fuchs für die erste Reaktion
viele Punkte sich geklärt und der rest sind gute Hinweise die ich einbringen werde.
zu den Skripten...
1. die unterschiedlichen Skripte werden auf jeden Fall auf eine Programmiersprache reduziert ... und welche das sein wird, wird noch entschieden - aber ich poste ja nicht umsonst das Thema hier im Forum
- wenn es nach mir ginge wird es Freepascal
2. ich sammel auch jetzt schon Argumente für das erste KickOff am 22.9. - habe mir natürlich auch im Vorfeld Gedanken darüber gemacht ob das mit Freepascal überhaupt machbar ist - das knock out Kriterium ist eindeutig AIX - und da es ab jetzt auch einen FPC AIX Port gibt, wird es in die engere Wahl kommen - ich muss denen aber aufzeigen können, wie man es umsetzen kann
3. die benötigten Tools wie Jenkins & Co sind nicht das Problem - was für mich im Moment noch die Black Box ist, sind die Testfälle ...
4. dazu habe ich mir schon die nötigen Pakete installiert und mir die Tests mal angesehen - das Prinzip verstehe ich halbwegs - was ich nicht zusammenbringe ist, wie man den Main Code mit den TestCases
zusammenbringt??
was mir klar ist, ist das man die Tests vor dem Main Code erstellt - also was soll alles getestet werden u.s.w
5. die ganzen Testskripte die ich mir angesehen habe sind ja nur einfache Beispiele wie -
das sind aber eigene Skripte -
MainCode<->TestCase
ich hänge mal ein Beispiel an für eine Ping - wie müssten der/die Tests geschrieben werden?
danke schon mal im voraus...

viele Punkte sich geklärt und der rest sind gute Hinweise die ich einbringen werde.
zu den Skripten...
1. die unterschiedlichen Skripte werden auf jeden Fall auf eine Programmiersprache reduziert ... und welche das sein wird, wird noch entschieden - aber ich poste ja nicht umsonst das Thema hier im Forum

2. ich sammel auch jetzt schon Argumente für das erste KickOff am 22.9. - habe mir natürlich auch im Vorfeld Gedanken darüber gemacht ob das mit Freepascal überhaupt machbar ist - das knock out Kriterium ist eindeutig AIX - und da es ab jetzt auch einen FPC AIX Port gibt, wird es in die engere Wahl kommen - ich muss denen aber aufzeigen können, wie man es umsetzen kann

3. die benötigten Tools wie Jenkins & Co sind nicht das Problem - was für mich im Moment noch die Black Box ist, sind die Testfälle ...
4. dazu habe ich mir schon die nötigen Pakete installiert und mir die Tests mal angesehen - das Prinzip verstehe ich halbwegs - was ich nicht zusammenbringe ist, wie man den Main Code mit den TestCases
zusammenbringt??
was mir klar ist, ist das man die Tests vor dem Main Code erstellt - also was soll alles getestet werden u.s.w
5. die ganzen Testskripte die ich mir angesehen habe sind ja nur einfache Beispiele wie -
Code: Alles auswählen
procedure TSampleTests.TestTwo;
var
s: string;
begin
s := 'hello';
Check(s = 'helloo', 'Failed on 1');
end;




ich hänge mal ein Beispiel an für eine Ping - wie müssten der/die Tests geschrieben werden?
danke schon mal im voraus...
- Dateianhänge
-
Test.7z
- (3.83 KiB) 108-mal heruntergeladen
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Jenkins mit Lazarus
Das Thema passt nicht mehr so richtig zum Thread, ich habe daher mal einen neuen aufgemacht: http://www.lazarusforum.de/viewtopic.php?f=18&t=8096
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Jenkins mit Lazarus
wie richtet man denn eigentlich xUnit für FPCUnit oder für FPTest ein??
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Jenkins mit Lazarus
Die kompletten Einrichtungsschritte habe ich nicht mehr im Kopf. Ich wollte dazu mal einen Eintrag im FPC-Wiki verfassen, aber wie es immer so ist... 
Zur Konfiguration auf Jenkinsseite findest du hier etwas: https://wiki.jenkins-ci.org/display/JEN ... nit+Plugin
Da musst du dann bloß noch angeben, welche .xml-Datei er nach dem Build-Vorgang und der Testausführung nutzen soll.
Die Datei erhältst du, indem du ein FPCUnit Console Test Application-Projekt erstellst und die erzeugte Anwendungsdatei später wie folgt aufrufst:

Zur Konfiguration auf Jenkinsseite findest du hier etwas: https://wiki.jenkins-ci.org/display/JEN ... nit+Plugin
Da musst du dann bloß noch angeben, welche .xml-Datei er nach dem Build-Vorgang und der Testausführung nutzen soll.
Die Datei erhältst du, indem du ein FPCUnit Console Test Application-Projekt erstellst und die erzeugte Anwendungsdatei später wie folgt aufrufst:
Code: Alles auswählen
./bin/test_cli.exe -a --file=./temp/test_results.xml
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
Re: Jenkins mit Lazarus
... xml erzeugt -> xUnit kann sie aber nicht einlesen -> Fehler: java.lang.NullPointerException: The types section is required.
Xunit erwartet irgend welche TestTypen die FPCUnit nicht liefert
wie muß die xml-Datei aussehnen
ich habe auch gelesen, das man eine xls-Datei hinterlegen kann
also - hat schon mal jemand einen xUnit Report erfolgreich erstellt??
Xunit erwartet irgend welche TestTypen die FPCUnit nicht liefert
wie muß die xml-Datei aussehnen
ich habe auch gelesen, das man eine xls-Datei hinterlegen kann
also - hat schon mal jemand einen xUnit Report erfolgreich erstellt??
- Dateianhänge
-
test_results.xml
- (1.09 KiB) 128-mal heruntergeladen
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: Jenkins mit Lazarus
Seltsam, ich habe deine XML-Datei mal in ein neues Jenkins-Projekt gepackt und er konnte sie problemlos lesen und interpretieren:
Ich verwende Jenkins 1.580 und das xUnit-Plugin 1.90.
Code: Alles auswählen
Testergebnis (1 fehlgeschlagener Test / +1)
TTestCase1.TestHookUp
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de