Jenkins mit Lazarus

Für sonstige Unterhaltungen, welche nicht direkt mit Lazarus zu tun haben
Antworten
slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Jenkins mit Lazarus

Beitrag von slai »

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
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
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

Beitrag von m.fuchs »

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.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

df.id
Beiträge: 20
Registriert: Fr 23. Mai 2008, 00:29
OS, Lazarus, FPC: Windows|Linux (L 2.0.6 FPC 3.0.4)
CPU-Target: Intel
Wohnort: Münster
Kontaktdaten:

Re: Jenkins mit Lazarus

Beitrag von df.id »

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.

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
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

Beitrag von m.fuchs »

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.


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.

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

slai
Beiträge: 211
Registriert: Fr 27. Apr 2007, 17:36
Wohnort: Zürich
Kontaktdaten:

Re: Jenkins mit Lazarus

Beitrag von slai »

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
Windows 7, Lazarus 0.9.28.2 fpc 2.2.4, Firebird 2.1, Zeoslib 6.6.6-stable

mtbf40
Beiträge: 72
Registriert: Do 3. Nov 2011, 16:39

Re: Jenkins mit Lazarus

Beitrag von mtbf40 »

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 :idea: :(

viele Grüße

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
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

Beitrag von m.fuchs »

Hallo,

das ist ja schon mal ein ganz schöner Brocken. Ich versuche mal auf einige Punkte einzugehen.

mtbf40 hat geschrieben:- die Skripte sollen alle standardisiert werden - angelehnt an Clean Code Rules

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:- das ganze findet in einem Industrieunternehmen statt - also keine Spielwiese

Hol die Geschäftsführung mit ins Boot. Die neuen Regelungen sollten "von oben" abgesegnet sein.
Und: Schaffe eine Spielwiese. Die Teammitglieder müssen Gelegenheit haben sich und die neuen Arbeitsmethoden auszuprobieren.

mtbf40 hat geschrieben:- ich möchte mich an der DEVOPS Philosophie orientieren

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:- die Umgebung möchte ich mit folgenden Komponenten aufbauen: GIT/SVN; BuildTool/DeploymentTool Jenkins oder ??; Artefakt Repository wenn nötig

Jenkins ist "nur" das Continuous Integration System. Das Deployment musst du selber gestalten, es kann aber durch Jenkins dann angetriggert werden.

mtbf40 hat geschrieben:- nach der Erstellung eines Skripts sollen automatisiert Test stattfinden die dann, letztendlich, auf den Produktivsystemen landen

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:- wie implementiere ich Tests im Main Code bzw. wie baue ich überhaupt einen TestCase auf - klar ist mir auch erst einmal Testfälle aufzustellen

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.
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

mtbf40
Beiträge: 72
Registriert: Do 3. Nov 2011, 16:39

Re: Jenkins mit Lazarus

Beitrag von mtbf40 »

danke erst einmal an m.fuchs für die erste Reaktion :D

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
:wink: - 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 :idea:
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;

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...
Dateianhänge
Test.7z
(3.83 KiB) 77-mal heruntergeladen

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
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

Beitrag von m.fuchs »

Das Thema passt nicht mehr so richtig zum Thread, ich habe daher mal einen neuen aufgemacht: viewtopic.php?f=18&t=8096
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

mtbf40
Beiträge: 72
Registriert: Do 3. Nov 2011, 16:39

Re: Jenkins mit Lazarus

Beitrag von mtbf40 »

wie richtet man denn eigentlich xUnit für FPCUnit oder für FPTest ein??

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
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

Beitrag von m.fuchs »

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:

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

mtbf40
Beiträge: 72
Registriert: Do 3. Nov 2011, 16:39

Re: Jenkins mit Lazarus

Beitrag von mtbf40 »

... 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??
Dateianhänge
test_results.xml
(1.09 KiB) 97-mal heruntergeladen

Benutzeravatar
m.fuchs
Lazarusforum e. V.
Beiträge: 2636
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

Beitrag von m.fuchs »

Seltsam, ich habe deine XML-Datei mal in ein neues Jenkins-Projekt gepackt und er konnte sie problemlos lesen und interpretieren:

Code: Alles auswählen

Testergebnis (1 fehlgeschlagener Test / +1)
 
    TTestCase1.TestHookUp


Ich verwende Jenkins 1.580 und das xUnit-Plugin 1.90.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de

Antworten