it-swarm.com.de

Der Windows-Stapelverarbeitungsbefehl von Jenkins schlägt fehl, wird aber in cmd.exe ausgeführt

Ich versuche, diesen Befehl in Jenkins nach einem MSbuild auszuführen

xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "Y:\Extraction_Zone\Jenkins\" /E 

Y: ist ein zugeordnetes Netzlaufwerk. In cmd.exe läuft das einwandfrei, aber wenn ich versuche, es in Jenkins auszuführen, erhalte ich die Fehlermeldung Invalid drive specification.

Hier ist die Ausgabe von Jenkins:

Time Elapsed 00:00:04.03
[trunk] $ cmd /c call C:\Windows\TEMP\hudson3389873107474371072.bat

C:\Program Files (x86)\Jenkins\workspace\trunk>xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "Y:\Extraction_Zone\Jenkins\" /E 
Invalid drive specification
0 File(s) copied

C:\Program Files (x86)\Jenkins\workspace\trunk>exit 4 
Build step 'Execute Windows batch command' marked build as failure
Finished: FAILURE

Jede Hilfe wäre dankbar.

12
Chris

Ich hatte auch einmal ein ähnliches Problem. Erteilen Sie dem Jenkins-Dienst das Recht "Anmelden als dieses Konto" unter services.msc, und stellen Sie sicher, dass das dort eingegebene Konto mit dem für die Ausführung von cmd.exe verwendeten Konto identisch ist.

enter image description here

14
adarshr

Diese auf Java JAR-Dateien basierenden Befehle funktionierten für mich:
cmd
Nettoverwendung x: \\
xcopy "dist" x:\/Y

Und das ist es! Ich habe viel Zeit damit verbracht, dieses Problem zu klären und nichts hat funktioniert, bis ich CMD und Net Use geschrieben habe!
Ich brauchte weder die Berechtigung für den jenkins-Dienst zu ändern noch den Befehl runas zu verwenden.

Ich muss jedoch erwähnen, dass jeder Lese- und Schreibzugriff auf das Netzlaufwerk hatte.

3
Jiří

Einfache Lösung für die meisten Dinge.

  1. Erstellen Sie einen Batchbefehl mit dem, was Sie ausführen möchten, dateiname.bat mit dem Befehl Aufforderungstext darin.
  2. Erstellen Sie eine normale Windows-Verknüpfung für den Stapelbefehl, bearbeiten Sie die erweiterten Eigenschaften der Verknüpfungen und überprüfen Sie "Ausführen als Administrator" (knifflig). 
  3. Führen Sie nun die Verknüpfung mit dem Dateinamen.lnk aus dem jenkins-Befehlszeilenaufruf aus. Dadurch werden Sie mit dem gesamten Jazz vertraut. 

:)

1
James Stevenson

Ich hatte das gleiche Problem mit meiner Windows-Task, die eine Batch-Datei ausführte (ich weiß, dass es nicht genau dieselbe ist), bei der ich versuchte, die Datei an den Netzwerkspeicherort zu kopieren, d. H. Ein freigegebenes Laufwerk. Ich habe den UNC-Pfad und das zugeordnete Laufwerk verwendet, aber der Fehler war derselbe. Für mich war es die Fehlernummer 4 - MS-DOS-Fehlercode ..__ Die Lösung war die Verwendung von Net Use command! Hoffe, dass es hilft.

1
user3104116

Konfrontiert mit einem ähnlichen Problem und fand zwei Lösungswege.

Geben Sie 1: .__ ein. Informieren Sie Jenkins über das zugeordnete Laufwerk

 def mapdrive = "Net Use Y: \\\\copy_nework_address"
 mapdrive.execute();
 println "Net Use".execute().getText()

Geben Sie Folgendes ein: 2 1.Goto -> cmd -> Führen Sie "Net Use" aus, um die Netzwerkadresse zu kennen

xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "Copy_Network_Address\Extraction_Zone\Jenkins\" /E

Fazit: - Ich bevorzuge 2. Typen, da ich nach jedem Neustart Groovy Script ausführen sollte.

0
LearNer

Die Lösung von Adarshr (dh das Ändern der Anmeldeinformationen des Dienstes) hat sich für einen Teil des Problems bewährt: In meinem Fall konnte ich damit ein Mercurial-Repository (mithilfe des SSH-Protokolls) auschecken, was ich konnte Nicht bei Verwendung des lokalen Systemkontos.

Ich verhalte mich jedoch immer noch anders, wenn ich ein Befehlszeilenskript oder dasselbe Skript von einem Jenkins-Skript zum Ausführen einer Shell im Build-Abschnitt aus ausführte. In meinem Fall kompiliere ich eine Python-Erweiterung. In Jenkins kann ich die Erweiterung nicht importieren (ich sehe keinen Fehler, aber die Ausführung stoppt einfach, daher vermute ich, dass sie abstürzt).

Wenn ich den Dienst deinstalliere und den Slave-Agenten als Java Web Start ausführte, erhalte ich dasselbe Verhalten. Dies ist eine temporäre Lösung für mich, bedeutet aber, dass ich beim Neustart der Windows-Build-Maschine die Java Web Start-Anwendung manuell neu starten muss.

So ist es - zumindest in meinem Fall - klar, dass dies ein Ausweisproblem ist.

Dokumentation zur Verwendung der Berechtigungsnachweise: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI

0
mfiers

Ich habe mein Problem mit dem CIFS Plugin gelöst.

0
swist