J'essaie d'exécuter cette commande dans Jenkins après un MSbuild
xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "Y:\Extraction_Zone\Jenkins\" /E
Y: est un lecteur réseau mappé. Cela fonctionne bien dans cmd.exe, mais lorsque j'essaie de l'exécuter dans Jenkins, l'erreur Invalid drive specification
s'affiche.
Voici la sortie de 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
Toute aide serait appréciée.
Moi aussi, j'ai eu un problème similaire une fois. Essayez d’accorder le service Jenkins «Ouvrir une session en tant que ce compte» sous services.msc
et assurez-vous que le compte que vous tapez est le même que celui que vous utilisez pour exécuter cmd.exe
.
Ces commandes basées sur des fichiers JAR Java ont fonctionné pour moi:
cmd
Net Use x: \\
xcopy "dist \" x:\/Y
Et c'est tout! J'ai passé beaucoup de temps à résoudre ce problème et rien ne fonctionnait jusqu'à ce que j'écrive CMD et Net Use!
Je n'ai pas eu besoin de changer d'autorisation sur le service Jenkins ni d'utiliser la commande runas.
Mais je dois mentionner que tout le monde avait un accès en lecture et en écriture au lecteur réseau.
Solution facile pour la plupart des choses.
:)
J'avais le même problème avec ma tâche Windows qui exécutait un fichier de traitement par lots (je sais que ce n’était pas exactement la même chose), où j’ai essayé de copier le fichier dans un emplacement réseau, c’est-à-dire un lecteur partagé. J'ai utilisé le chemin UNC et le lecteur mappé également, mais l'erreur était la même. Pour moi, il s’agissait de l’erreur numéro 4 - code d’erreur MS DOS . La solution consistait à utiliser Net Use command! J'espère que ça aide.
Face à un problème similaire et a trouvé deux façons de résoudre.
Type 1: Informer Jenkins du lecteur mappé . 1.Goto -> Gérer Jenkins -> Console de script (script Groovy) . 2. Exécuter la commande ci-dessous.
def mapdrive = "Net Use Y: \\\\copy_nework_address"
mapdrive.execute();
println "Net Use".execute().getText()
Tapez: 2 1.Goto -> cmd -> lancez "Net Use" pour connaître l'adresse réseau
xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "Copy_Network_Address\Extraction_Zone\Jenkins\" /E
Conclusion: - Je préfère les deuxièmes types, car après chaque redémarrage, je devrais exécuter Groovy Script.
La solution de adarshr (modification des identifiants de connexion du service) a fonctionné pour moi dans une partie du problème: dans mon cas, cela m'a permis d'extraire avec succès un référentiel Mercurial (utilisant le protocole ssh), ce que je pouvais ne pas faire lorsque vous utilisez «compte système local».
Cependant, mon comportement est toujours différent entre l'exécution d'un script de ligne de commande ou le même script à partir du script "exécuter Shell" de jenkins dans la section de construction. Dans mon cas, je compile une extension Python. Dans Jenkins, je ne peux pas importer l'extension (je ne vois aucune erreur, mais l'exécution s'arrête tout simplement, alors je suppose qu'elle se bloque).
Si je désinstalle le service et exécute l'agent esclave en tant que Java Web Start, j'obtiens le même comportement. C'est une solution temporaire pour moi, mais cela signifie que lorsque je redémarre la machine de génération de Windows, je dois redémarrer manuellement l'application Java Web Start.
Donc - au moins dans mon cas - il est clair qu'il s'agit d'un problème de justificatif d'identité.
Documentation d'utilisation des informations d'identification: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI
J'ai résolu mon problème avec le plugin CIFS .