Шаг сборки Jenkins не может удалить каталог - PullRequest
0 голосов
/ 21 января 2020

До недавнего времени все работало нормально с нашим процессом сборки в Jenkins. Мы получили довольно большой проект со многими модулями и сложной структурой зависимостей. Неожиданно сборка завершается с сообщениями об ошибках вроде следующего:

Не удалось выполнить цель sure-plugin : 109: sureEar ( sureEar ) в приложении проекта: определенный плагин : невозможно взорвать файл ear 'app-SNAPSHOT.ear': ошибка, каталог не может быть удален

команда maven он выполняется в конвейере сборки и выдает следующее сообщение об ошибке:

mvn -B -U package -DskipTests

Временный обходной путь - удаление поврежденного каталога вручную. Раньше у меня была похожая проблема с удалением уха, там было возможно исключить пораженное ухо из этого этапа построения, так как оно там не требовалось. После этого я получил сообщение об ошибке, упомянутое выше.

Теперь я нашел (вроде) окончательное решение: добавление clean к целям команды maven:

mvn -B -U clean package -DskipTests

Теперь шаг строительства работает нормально. Но какого чёрта это происходит? Есть ли у вас какие-либо намеки, что может привести к такому поведению? Я совершенно невежествен, если не сказать больше.

Каким-то образом это может иметь какое-то отношение к извлечению уха из нашего большого приложения. Вскоре после того, как мы закончили это и объединили в нашу основную ветку, эти ошибки начали возникать. Так как я не был вовлечен в эту работу, трудно отследить, что именно там произошло, и что может привести к такому поведению. Параллельно я буду исследовать, что там делали коллеги. Намек от вас, какие могут быть причины, безусловно, поможет отследить это.

Я не нашел в Интернете ничего похожего на эти сообщения об ошибках, которые помогли бы мне в любом случае.

1 Ответ

0 голосов
/ 21 января 2020

Ваше решение "mvn clean" указывает мне, что ваша работа выполняется в рабочей области jenkins, которая содержит выполнение предыдущей работы. Я бы рекомендовал всегда начинать свою работу с очистки того, что находится в рабочей области. В работе по фристайлу в разделе «Управление исходным кодом» вы можете добавить поведение

Стирание хранилища и принудительное клонирование

в конвейерах, вы можете использовать там шаг проверки

            checkout([$class: 'GitSCM',
                extensions: scm.extensions + [[$class: 'WipeWorkspace']] + [[$class: 'PruneStaleBranch']],
                userRemoteConfigs: [[
                    url: '<git_url>'
                ]]
            ])

Есть и другие способы очистки рабочей области в конвейере, такие как cleanWS и deleteDir. Предпочитаю оформить заказ плагином WipeWorkspace

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...