Выполнять команду пакетного окна 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
Ответ 6
Я решил проблему с плагин CIFS.
Ответ 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", помеченный как сборка как завершенная: Завершено: СБОЙ
Я получаю вышеуказанную ошибку, не в состоянии распознать точную проблему.