Вопрос по cmd, jenkins, batch-file, xcopy – Выполнить пакетную команду Windows из Jenkins не удается, но работает нормально в cmd.exe

12

Я пытаюсь запустить эту команду в 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.

Вот вывод от Дженкинса:

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

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

Вы решили это? Я сталкиваюсь с чем-то похожим (поведение Дженкинса отличается от командной строки) Kohanz
Я понял, что забыл часть пути \ Jenkins, но все еще получаю сообщение об ошибке Invalid drive:C:\Program Files (x86)\Jenkins\workspace\trunk>xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "\\COMP-NAME\Webs\Extraction_Zone\Jenkins\" /E Invalid drive specification Chris
Дженкинс не работает как сервис? Если это так, вы должны разрешить своего эмитента, указав сетевой путь вместо подключенного диска. Steve B
Y: вероятно, сопоставлен с конкретным пользователем. Дженкинс, вероятно, работает под собственной «учетной записью службы». без доступа к этой букве диска Y:? Вы можете попробовать использовать UNC-путь вместо Y :, т.е. \\ ServerName \ Folder \ Extraction_zone \ Jenkins \ & quot; JMC
Спасибо за ответы. Я пробовал это, но получаю доступ отказано:Time Elapsed 00:00:03.70 [trunk] $ cmd /c call C:\Windows\TEMP\hudson7535872922876977589.bat C:\Program Files (x86)\Jenkins\workspace\trunk>xcopy "C:\Program Files (x86)\Jenkins\workspace\trunk\Projects\results\results\obj\Debug\Package\PackageTmp" "\\COMP-NAME\Webs\Extraction_Zone" /E Access denied Unable to create directory - \\COMP-NAME\Webs\Extraction_Zone 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 Chris

Ваш Ответ

7   ответов
0
0

мне решить часть проблемы: в моем случае это позволило мне успешно проверить ртутный репозиторий (используя протокол ssh), который я мог не использовать при использовании «учетной записи локальной системы».

Тем не менее, у меня все еще есть другое поведение между выполнением сценария командной строки или выполнением одного и того же сценария из оболочки jenkins 'execute shell & apos; скрипт в разделе сборки. В моем случае я компилирую расширение Python. В Jenkins я не могу импортировать расширение (я не вижу никакой ошибки, но выполнение просто останавливается, поэтому я подозреваю, что оно падает).

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

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

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

1

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

0

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

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

Тип: 2 1.Goto - & gt; cmd - & gt; запустите "net use" знать сетевой адрес

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.

3


CMD
чистое использование x: \\
xcopy & quot; dist \ & quot; х: \ / Y

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

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

Это исправило и мои скрипты на Python, которые пытались записать в сетевую папку. Изменение / обновление пользователя при входе в систему не помогло ...
Это также помогло мне (у меня уже был сервер jenkins согласно ответу @adarshr). Для улучшения читаемости вторая строка означаетnet use x: \\yournetworkshare\foldername
14

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

enter image description here

Это не похоже на работу. Я попытался войти в систему как администратор, но я получаю ту же ошибку. Chris
Если вы пришли сюда с помощью параметров GIT, которые не работают в вашем пакете, но работают в cmd.exe:issues.jenkins-ci.org/browse/JENKINS-34082
У меня была проблема с этим: после смены пользователя служба будет запускаться, а затем останавливаться. проверьте программу просмотра событий для получения дополнительной информации. в моем случае у моего пользователя не было доступа к C: \ program files \ jenkins
Я бегу со своей рабочей машины, и у меня возникла та же проблема. Я сделал, как предложил @adarshr, и использовал эту учетную запись и просмотр ... затем посмотрел информацию и пароль моей корпоративной учетной записи AD. Работал как шарм!
1

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

Make a batch command with what your trying to run, filename.bat with the command prompt text inside. Make a normal windows shortcut for the batch command, edit the shortcuts advanced properties and check the "Run as admin" (tricky tricky). Now run the filename.lnk shortcut from jenkins command line call, this will get you around all the jazz. ,

:)

Похожие вопросы