![]() |
Jenkins und Netzlaufwerke
Ich habe Jenkins in meiner virtuellen Maschine auf dem C:\ Laufwerk installiert.
Alle unter "Freestyle" angelegte Projekte, die einen Aufruf auf ein Netzwerklaufwerk beinhalten (hier eingebunden als "D:\"), funktionieren nicht (Laufwerk bzw. oder Pfad nicht gefunden)". Alle CD Laufwerk-Befehle oder auch PushD-Befehle gehen nicht (also nicht "cd C:\DEV\DX10\PFDMain" ). Die gleichen Befehle in einer Batch-Datei unter einem DOS-Prompt aufgerufen funktionieren. Ist das irgendeine Einschränkung oder eine bekannte Problematik von Jenkins? |
AW: Jenkins und Netzlaufwerke
Der Jenkins läuft nicht zufällig in einem anderen Nutzeraccount, als wie du normal im Windows eingeloggt bist?
Wenn nicht, dann sieht er eventuell ein "virtuelles" Laufverk nicht, weil es vermutlich nur in deinem aktuellen Nuteraccount eingerichtet ist, z.B. beim SUBST. |
AW: Jenkins und Netzlaufwerke
Nein, ist der gleiche Benutzer-Account. Ich nutze Virtualbox als VM, unter Linux.
|
AW: Jenkins und Netzlaufwerke
kenne ich auch so, weiß aber keinen Grund dafür, ich greife halt per unc Pfad auf die Netzlaufwerke zu.
|
AW: Jenkins und Netzlaufwerke
Das Problem sind vermutlich die verschiedenen Benutzertoken, selbst wenn man den Dienst unter dem gleichen Konto startet.
Eine simple Lösung ist, das Netzlaufwerk auch im Dienstkontext unter dem gewünschten Nutzer zu verbinden. Das kann man ganz einfach machen, indem man den Befehl als Task ausführt (oder in Jenkins eine passende Aufgabe anlegt). Dabei muss man das gleiche Benutzerkonto verwenden und "Mit höchsten Privilegien ausführen" auswählen. Ich würde allerdings auch sehr zur Verwendung von UNC-Pfaden raten. |
AW: Jenkins und Netzlaufwerke
Es funktioniert leider auch nicht mit UNC-Pfaden.
Aber evtl. habe ich ja auch etwas falsch verstanden. Die Beispiele im Internet machen es immer so, dass Sie von einem Online-Repository das Projekt in das Jenkings Workspace Directory laden und dort kompilieren. Das will und kann ich derzeit (noch) nicht, da ich einen Ordner bzw. meherere Ordner mit Shared-Units habe. Für die habe ich mir jeweils eigene Repositories angelegt. Die Überlegung war dann u.a. wenn ich eine Änderung in einer der Shared-Units mache, mal kurz alle Projekte testen lasse, ob die nach der Änderung noch gehen, dazu wollte ich halt Jenkins (u.a.) verwenden. Hier mal, was in meiner build.bat steht, die im Ornder "Jobs" liegt:
Code:
Und hier das, was ich imm Jenkins-Build-Step drin stehen habe:
call "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\rsvars.bat"
cd %1 msbuild %2
Code:
Aber das kommt dabei raus:
call "%JENKINS_HOME%\jobs\build.bat" "\\EW0\P\DEV\DX10\PDFMAN" PDFManager.dproj
Code:
Gestartet durch Benutzer Harry Stahl
Running as SYSTEM Baue in Arbeitsbereich C:\Users\Harry-Dev\AppData\Local\Jenkins\.jenkins\workspace\CompilePDFManagerRelease [CompilePDFManagerRelease] $ cmd /c call C:\Users\HARRY-~2\AppData\Local\Temp\jenkins5243078457989210909.bat C:\Users\Harry-Dev\AppData\Local\Jenkins\.jenkins\workspace\CompilePDFManagerRelease>call "C:\Users\Harry-Dev\AppData\Local\Jenkins\.jenkins\jobs\build.bat" "\\EW0\P\DEV\DX10\PDFMAN" PDFManager.dproj C:\Users\Harry-Dev\AppData\Local\Jenkins\.jenkins\workspace\CompilePDFManagerRelease>call "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\rsvars.bat" C:\Users\Harry-Dev\AppData\Local\Jenkins\.jenkins\workspace\CompilePDFManagerRelease>cd "\\EW0\P\DEV\DX10\PDFMAN" "\\EW0\P\DEV\DX10\PDFMAN" CMD unterstützt keine UNC-Pfade als aktuelles Verzeichnis. C:\Users\Harry-Dev\AppData\Local\Jenkins\.jenkins\workspace\CompilePDFManagerRelease>msbuild PDFManager.dproj Microsoft (R)-Buildmodul, Version 4.8.9037.0 [Microsoft .NET Framework, Version 4.0.30319.42000] Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten. MSBUILD : error MSB1009: Die Projektdatei ist nicht vorhanden. Schalter: PDFManager.dproj C:\Users\Harry-Dev\AppData\Local\Jenkins\.jenkins\workspace\CompilePDFManagerRelease>exit 1 Build step 'Windows Batch-Datei ausführen' marked build as failure Finished: FAILURE |
AW: Jenkins und Netzlaufwerke
Bei UNC-Pfaden kann dann, da es ja der gleiche Benutzer ist, fast nur noch sein, dass die Policies es Diensten verbieten auf Netzwerkressourcen zuzugreifen. Das ist nicht unüblich. Ich weiß aber nur, dass das geht, nicht wie die Policy konkret heißt. Da müsstest du mal schauen.
Bezüglich deiner Shared Units: Das ist doch gar kein Problem. Ich habe auch aus einem Repository die gemeinsamen Units ausgecheckt und aus einem weiteren die konkreten Projekte. Dafür ist Jenkins doch gut geeignet. |
AW: Jenkins und Netzlaufwerke
Diese Meldung ist aufgefallen?
Code:
cd \\unc\wasauchimmer geht mit der Kommandozeile nicht.
CMD unterstützt keine UNC-Pfade als aktuelles Verzeichnis.
Damit startet msbuild dann in C:\Users\Harry-Dev\AppData\Local\Jenkins\.jenkins\workspace\Compi lePDFManagerRelease und dort ist die PDFManager.dproj nicht zu finden. Vielleicht geht ja sowas in der Art:
Code:
:rem build.bat
call "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\rsvars.bat" msbuild %1 :rem Aufruf call "%JENKINS_HOME%\jobs\build.bat" "\\EW0\P\DEV\DX10\PDFMAN\PDFManager.dproj" |
AW: Jenkins und Netzlaufwerke
Zitat:
Der Dienst läuft aber schon unter meinem Benutzernamen (also im Eigenschaften-Dialog des Dienstes "Dieses Konto" und nicht "Lokales Systemkonto"). |
AW: Jenkins und Netzlaufwerke
Zitat:
Aber dann kommt diese Fehlermeldung:
Code:
Wobei mir unverständlich ist, dass da versucht wird, das Verzeichnis (das schon besteht), zu erzeugen....
Der Buildvorgang wurde am 22.11.2023 19:29:46 gestartet.
Projekt "\\EW0\P\DEV\DX10\PDFMAN\PDFManager.dproj" auf Knoten "1" (Standardziele). CreateProjectDirectories: Das Verzeichnis D:\DEV\DX10\PDFMAN\ wird erstellt. md "D:\DEV\DX10\PDFMAN\" C:\Program Files (x86)\Embarcadero\Studio\22.0\Bin\CodeGear.Delphi.Targets(784,5): error MSB3191: Das Verzeichnis D:\DEV\DX10\PDFMAN\ kann nicht erstellt werden. Ein Teil des Pfades "D:\DEV\DX10\PDFMAN\" konnte nicht gefunden werden. [\\EW0\P\DEV\DX10\PDFMAN\PDFManager.dproj] Die Erstellung des Projekts "\\EW0\P\DEV\DX10\PDFMAN\PDFManager.dproj" ist abgeschlossen (Standardziele) -- FEHLER. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz