Задание Дженкинса не может удалить каталог

Я запускаю сценарий make (параметр команды Execute Shell) внутри задания jenkins.
Сценарий make имеет команду оболочки rm -rf <directory name>.
Эта команда завершается с ошибкой, указывающей, что каталог не пуст. Поскольку скрипт использует rm -rf, он должен работать, даже если каталог не пуст.
Не уверен, что здесь не так.
Любая помощь в этом будет высоко оценена.


person Sandy    schedule 05.04.2017    source источник


Ответы (2)


Если ваше задание Jenkins выполняется на компьютере с Linux, это может быть:

В Windows проверьте полное сообщение об ошибке: возможно, ресурс вытеснен ОС (используется другим процессом).

person VonC    schedule 05.04.2017
comment
Это Linux Box. Я вижу, что каталог рабочей области принадлежит пользователю jenkinsutil, а задание выполняется пользователем projectutil. ‹br/› Могу ли я убедиться, что задание может запускать указанную команду в каталоге, принадлежащем другому пользователю? - person Sandy; 05.04.2017
comment
@Sandeep Итак, первые три ссылки (из первых двух пунктов) актуальны. - person VonC; 05.04.2017
comment
да. Я думаю, что могу изменить разрешение для файлов, загруженных в рабочую область jenkins, до запуска сценария. Я попробую. - person Sandy; 05.04.2017
comment
Привет, я попытался добавить разрешения для удаляемого каталога, но команда rm -rf не работает с тем же сообщением. Не уверен, что не так. Та же команда отлично работает на локальной машине - person Sandy; 11.04.2017
comment
@Sandeep Можете ли вы попробовать rm -Rf вместо rm -rf? - person VonC; 11.04.2017
comment
Я не могу, так как код извлекается из репо, где я не могу вносить изменения, но та же команда работает для другой папки. Вот вывод сборки - ДОБАВИТЬ прокси / тест с использованием кеша RUN rm -rf /test/.classpath /test/.gitignore /test/.gradle /test/.project /test/.settings /test/Dockerfile /test/build RUN cd /тест; ./gradlew oneJar RUN rm -rf /test/src [91mrm: невозможно удалить '/test/src/main/java/prj/java/action': каталог не пуст Команда '/bin/sh -c rm -rf / test/src' вернул ненулевой код: - person Sandy; 11.04.2017
comment
@Sandeep, так что это может быть не проблема с разрешением, а какая-то проблема с гонкой, здесь папка все еще используется предыдущей командой, я полагаю - person VonC; 11.04.2017
comment
Это может происходить. Команда перед rm -rf, которая завершается ошибкой, является командой сборки, которая компилирует код в тот же каталог. Есть ли способ дождаться завершения этой команды сборки, а затем выполнить только команду em -rf? - person Sandy; 11.04.2017

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

Попробуйте запустить следующую команду:

rm mydir/* mydir/.* 
rmdir mydir
person Pritam Banerjee    schedule 05.04.2017
comment
В среде Windows это должно быть rmdir 'mydir' /S /Q, чтобы принудительно удалить все содержимое и сам каталог, не спрашивая, но исходный вопрос выглядит так, как будто это был сценарий Linux, понятия не имею, как это сделать - person DanDan; 19.07.2019