Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Probleme bei Integration von Delphi in Jenkins CI (https://www.delphipraxis.net/191712-probleme-bei-integration-von-delphi-jenkins-ci.html)

BastiFantasti 13. Feb 2017 14:48

Probleme bei Integration von Delphi in Jenkins CI
 
Hallo miteinander,

ich habe auf einem separaten Rechner einen Jenkins Build Server und Delphi 10 Seattle aufgesetzt.
Als Schnittstelle zwischen Delphi und Jenkins dient das Rad Studio Plugin
Als Quelle und Trigger für Build Vorgänge dient Subversion.

Die Installation war soweit schnell erledigt und Delphi 10 als Rad Studio Umgebung eingebunden.
Wichtig ist das die Hinweise hier berücksichtigt werden.

Einfache Projekte lassen sich problemlos anlegen und kompilieren, nur manche Projekte
(z.B. mit welchen in denen ich die Zeos Komponenten verwende) werfen beim kompilieren immer Fehler auf wie z.B.:


error F2613: Unit 'ZAbstractRODataset' nicht gefunden


obwohl sämtliche Pfade zu den Zeos Komponenten im Bibliothekspfad für 32 und 64 bit hinterlegt sind und das händische kompilieren auf dem selben Rechner problemlos klappt.

Es scheint, als ob der Bibliothekspfad nicht korrekt ausgewertet wird, wenn der Build via MSBuild angestossen wird.
Pfade die in den Suchpfad des Projekts aufgenommen werden funktionieren hingegen.

Hat hier eine(r) schon Erfahrungen sammeln können und eventuell eine Idee parat?

Danke im Voraus.

Bastian

[edit]
Alternativ hab ich versucht das Projekt via Windows Batchfile zu erstellen, anstelle des Rad Studio Plugins.
Das Ergebnis ist leider identisch.

Uwe Raabe 13. Feb 2017 15:09

AW: Probleme bei Integration von Delphi in Jenkins CI
 
Läuft das Jenkins denn auch als der User, unter dem die Bibliothekspfade eingetragen sind?

BastiFantasti 13. Feb 2017 15:26

AW: Probleme bei Integration von Delphi in Jenkins CI
 
Ja, ich habe auf dem Rechner aktuell nur einen Benutzer angelegt. Unter diesem wird auch der Dienst ausgeführt (nicht mehr als System).

BastiFantasti 14. Feb 2017 08:23

AW: Probleme bei Integration von Delphi in Jenkins CI
 
Ich habe gesehen, dass wenn Änderungen an den Pfaden im Delphi gemacht werden auch die Datei EnvOptions.proj unterhalb von
c:\users\<name>\appdata\roaming\embarcadero\BDS\17 .0 gemacht werden.
Dies ist wohl auch eine Datei die für MSBuild benötigt wird.

Hier sind die Pfade zu den Zeos Komponenten richtig eingetragen.

mjustin 14. Feb 2017 09:43

AW: Probleme bei Integration von Delphi in Jenkins CI
 
Seit Delphi 7 setzen wir in der Firma Hudson bzw. Jenkins in Verbindung mit Apache Ant ein (wird von Jenkins out of the box unterstützt). Das Ant Buildfile ist eine XML Datei in der man den Delphi Compiler mit den entsprechenden Parametern aufgerufen wird. (MSBUILD wird damit aus der Gleichung eliminiert). Wenn ich mich zwischen Builds per Batchdateien und Ant entscheiden müßte, würde ich Ant nehmen.

BastiFantasti 14. Feb 2017 11:51

AW: Probleme bei Integration von Delphi in Jenkins CI
 
Vielen Dank für den Tipp.

Ich werde mal schauen ob ich da ne Anleitung dazu finde und es testen.

BastiFantasti 14. Feb 2017 13:45

AW: Probleme bei Integration von Delphi in Jenkins CI
 
Hast du mir da eventuell ein solches Beispiels XML File für Ant?

Bin jetzt einen Schritt weiter gekommen, aber mit Kompilerdirektiven kommt MSBuild irgendwie auch nicht so richtig klar (oder ich komm mit dem Handling der Kompilerdirektiven von MSBuild nicht klar :) )

Danke schon mal im voraus

Bernhard Geyer 14. Feb 2017 14:12

AW: Probleme bei Integration von Delphi in Jenkins CI
 
Jenkins und Delphi mit MSBuild läuft bei uns gut:


Du musst auf jeden falls rsvars.bat aufrufen:

Code:
call "D:\Programme\Embarcadero\Studio\14.0\bin\rsvars.bat"

Und dann das Projekt

Code:
msbuild "<PfadZumProjekt>\MyProject.dproj" /p:config=Release

mjustin 14. Feb 2017 19:23

AW: Probleme bei Integration von Delphi in Jenkins CI
 
Zitat:

Zitat von BastiFantasti (Beitrag 1361546)
Hast du mir da eventuell ein solches Beispiels XML File für Ant?
Bin jetzt einen Schritt weiter gekommen, aber mit Kompilerdirektiven kommt MSBuild irgendwie auch nicht so richtig klar (oder ich komm mit dem Handling der Kompilerdirektiven von MSBuild nicht klar :) )

Jenkins verwendet standardmäßig ein eigenes Arbeitsverzeichnis in dem alle Dateien aus dem Versionsverwaltungssystem ausgecheckt werden. Daher ist - egal ob mit Ant oder MSBuild - sehr wichtig, dass alle darin enthaltenen projektbezogenen Pfad- und Verzeichnisangaben relative Pfade sind. Absolute Pfade werden nur für vorgegegebene Dinge wie externe Drittanbietertools / Komponenten verwendet.

Man kann einen Jenkins Job auch so konfigurieren, dass das Projekt in einem definierten Vereichnis ausgecheckt wird, wenn man die absolute Pfade des Projekts beibehalten will oder muss (z.B. wenn man ohne Änderungen an den Projekten Jenkins ausprobieren will). Dazu gibt es eine Einstellung "Change folder of workspace"

BastiFantasti 16. Feb 2017 07:07

AW: Probleme bei Integration von Delphi in Jenkins CI
 
Guten Morgen zusammen,

das erste Problem mit den externen Bibliotheken wie zeos Komponenten ist gelöst. Irgendwie stand dem Benutzer das Laufwerk nicht zur Verfügung auf dem diese Quellen abgelegt sind.
Obwohl das Laufwerk zugewiesen war und der Jenkins Dienst mit dem gleichen Benutzer ausgeführt wird.

Das Ergebnis ist mit dem MSBuild Aufruf via Windows Batch ist gleich wie der Aufruf über das Rad Studio Plugin. Ich glaube das Rad Studio Plugin macht sowieso nix anderes als die rsvars im jeweils konfigurierten Delphi aufzurufen und dann msbuild nachzuschieben.

Jetzt habe ich nur noch das Problem, dass die Parameter nicht richtig an MSBuild übergeben werden.

Ich habe in einem Projekt mehrere Build Spezifikationen unterhalb von Release. Also z.B.:

Release
->Release_X1
->Release_X1_demo
->Release_X2
->Release_X2_demo

Wenn ich nun in den Switches definiere: /p:config=Release_X1 /p:platform=Win32
Versucht MSBuild alle Builds durchzukompilieren und nicht nur die explizit angegebene Release_X1 Konfiguration.



@mjustin: Ja, so habe ich das implementiert. Alle Pfade sind relativ, ausser z.B. die zeos Komponenten, oder wenn installiert die J(V)CL Bibliothek. Die sind dann mit festem Pfad in den Delphi Einstellungen hinterlegt

[edit]

... und noch komischer ist, dass alle Konfigurationen einzeln in der IDE problemlos durchkompiliert werden können.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz