2 votes

Les tâches Ant move, copy échouent sur les lecteurs mappés dans jenkins

J'ai un fichier ant qui a des tâches de déplacement et de copie. Les emplacements source et destination sont sur le lecteur réseau mappé. R:\ . Lorsque je les exécute à l'invite de commande, la construction est réussie, mais lorsque je la configure en tant que tâche dans le fichier Jenkins Les tâches échouent et la console affiche le message suivant.

BUILD FAILED
C:\Users\admin\.jenkins\jobs\CopyTask\workspace\build.xml:24: R:\dest does not exist.

Total time: 0 seconds
Build step 'Invoke Ant' marked build as failure
Finished: FAILURE

La construction autonome et la construction Jenkins se font avec les mêmes identifiants.

J'ai consulté les questions copie dans ANT jette java.io.FileNotFoundException y Copie de la fourmi Tâche : Échec de la copie en raison d'une exception java.io.FileNotFoundException mais cela ne m'a pas aidé à résoudre le problème.

EDIT

Le service Jenkins fonctionnait sous un compte système local et dans l'application Jenkins, j'utilisais la "base de données d'utilisateurs propre à Jenkins" pour le domaine de sécurité. J'avais créé un utilisateur appelé "admin" avec toutes les autorisations nécessaires. Après avoir examiné ce problème, je me suis rendu compte qu'il n'y avait pas de problème. lien J'ai installé Plugin Active Directory et a utilisé les informations d'identification d'un compte d'administrateur pour démarrer le service Jenkins. Mais je reçois toujours le message d'erreur suivant

BUILD FAILED
C:\Users\admin\.jenkins\workspace\CopyTask\build.xml:11: 
Failed to copy C:\Users\admin\FldrToCopy\data.7z to 
R:\data.7z due to failed to create the parent directory for R:\data.7z

Total time: 0 seconds
Build step 'Invoke Ant' marked build as failure
Finished: FAILURE

4voto

David W. Points 49436

De toute évidence, le compte système que vous utilisez ne dispose pas de ce lecteur mappé. Avant de procéder à la copie, essayez de mapper le lecteur à l'aide de la fonction Windows utilisation nette commandement. Dans Jenkins, vous pouvez exécuter cette commande dans vos étapes de construction comme une commande shell avant d'exécuter votre script Ant.

Je n'ai pas de machine Windows sous les yeux, mais cela devrait ressembler à ceci :

net use R: /delete
net use R: /persistent:yes \\windows\share\path

Vous voulez faire le net use R: /delete d'abord pour supprimer tout mappage existant.

Si cela ne fonctionne pas, essayez este . Cela vous aidera à créer un lecteur mappé vers votre compte système qui existe toujours.

1voto

Jeff Olson Points 2118

Sous quel compte d'utilisateur Jenkins est-il exécuté ? S'il s'exécute sous le compte SYSTEM, il ne peut probablement pas voir le lecteur mappé. Jetez un coup d'œil à Cartographier un lecteur réseau à utiliser par un service pour trouver des idées.

Ou peut-être pourriez-vous utiliser le chemin UNC au lieu du lecteur mappé ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X