Выполнять команду пакетного окна Windows из Jenkins не удается, но отлично работает в cmd.exe

Я пытаюсь запустить эту команду в jenkins после MSbuild

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

Y: это подключенный сетевой диск. Это отлично работает в cmd.exe, но при попытке запустить его в Jenkins, я получаю сообщение об ошибке Invalid drive specification.

Вот результат от 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

Любая помощь будет оценена.

Ответ 1

У меня тоже была аналогичная проблема. Попробуйте предоставить услугу Jenkins "Вход в систему как эта учетная запись" прямо под services.msc и убедитесь, что выбранная вами учетная запись такая же, как та, что вы используете для запуска cmd.exe.

enter image description here

Ответ 2

Эти команды, основанные на Java JAR файлах, работали для меня:
CMD
net use x:\\
xcopy "dist \" x: \/Y

И это! Я потратил много времени на выяснение этой проблемы, и ничего не работало, пока я не написал CMD и NET USE!
Мне также не нужно было менять разрешение на службу jenkins или использовать команду runas.

Но я должен упомянуть, что у всех был доступ на чтение и запись на сетевой диск.

Ответ 3

У меня была такая же проблема с моей задачей Windows, которая запускала пакетный файл (я знаю, что это не совсем так), где я пытался скопировать файл в сетевое расположение, то есть на общий диск. Я использовал путь UNC и подключенный диск, но ошибка была такой же. Для меня это был код ошибки номер 4 - MS DOS. Решение заключалось в использовании команды net use! Надеюсь, что это поможет.

Ответ 4

Легкое исправление для большинства вещей.

  • Сделайте командную команду с тем, что вы пытаетесь запустить, filename.bat с текстом командной строки внутри.
  • Сделайте обычный ярлык для командной строки, отредактируйте расширенные свойства ярлыков и установите флажок "Запуск от имени администратора" (сложная сложность).
  • Теперь запустите ярлык filename.lnk из командной строки jenkins, это поможет вам обойти весь джаз.

:)

Ответ 5

Решение adarshr (т.е. изменение журнала по учетным данным службы) сработало для меня для части проблемы: в моем случае это позволило мне успешно проверить ртутный репозиторий (используя протокол ssh), которые я не мог сделать при использовании "Локальной учетной записи системы".

Однако у меня по-прежнему существует другое поведение между запуском командной строки script или запуском того же script из оболочки выполнения jenkins 'script в разделе сборки. В моем случае я компилирую расширение Python. В Jenkins я не могу импортировать расширение (я не вижу никакой ошибки, но выполнение просто останавливается, поэтому я подозреваю, что он сбой).

Если я удалю службу и запустил ведомый агент как Java Web Start, я получаю то же поведение. Это временное решение для меня, но это означает, что когда я перезагружаю машину для сборки Windows, мне нужно вручную перезапустить приложение Java Web Start.

Итак, по крайней мере, в моем случае - ясно, что это проблема с учетными данными.

Документация по использованию учетных данных: https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI

Ответ 7

Столкнувшись с подобной проблемой и нашел два способа решения.

Тип 1: Расскажите Дженкинсу о подключенном диске. 1.Goto → Управление Jenkins → Script Консоль (Groovy Script). 2. Запустите команду

 def mapdrive = "net use Y: \\\\copy_nework_address"
 mapdrive.execute();
 println "net use".execute().getText()

Тип: 2 1.Goto → cmd → запустить "сетевое использование", чтобы узнать сетевой адрес

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

Заключение: - Я предпочитаю 2-й тип, так как после каждого перезапуска я должен запускать Groovy Script.

Ответ 8

Запуск от имени SYSTEM Сборка в рабочей области C:\Program Files (x86)\Jenkins\workspace\jmeter_test [jmeter_test] $ cmd/c вызов C:\Windows\TEMP\jenkins3656824184576473263.bat

C:\Program Files (x86)\Jenkins\workspace\jmeter_test> date Текущая дата: вт 16/16/2019 Введите новую дату: (mm-dd-yy) C:\Program Files (x86)\Jenkins\рабочее пространство \jmeter_test> выход 1 Шаг сборки "Выполнить пакетную команду Windows", помеченный как сборка как завершенная: Завершено: СБОЙ

Я получаю вышеуказанную ошибку, не в состоянии распознать точную проблему.