Ошибка удаления обычно возникает из-за недостаточных разрешений или из-за того, что кто-то / что-то блокирует файл.
Я заметил, что папка, которую Дженкинс безуспешно пытался удалить, динамически создавалась в контейнере сценарием сборки.Папка и все файлы ниже были созданы с помощью root / root (пользователь / группа).
Это помогло мне понять основную причину этой проблемы - конвейер работает с jenkins / jenkins (пользователь / группа) и не может удалить файлы / папки, созданные другим пользователем (root / root в моем случае),
Решение, которое я придумал, состояло в том, чтобы создать образ докера с тем же пользователем (принадлежащим к той же группе), который используется хост-системой (моя контейнерная ОС основана на Alpine ):
RUN addgroup -S -g 6002 jenkins
RUN adduser -S -u 6002 -G jenkins jenkins
USER jenkins
Обратите внимание, что GID и UID (оба равны 6002 в приведенном выше примере) должны совпадать с идентификаторами на вашем хост-компьютере.Чтобы найти их, вы можете использовать следующие команды:
id -u jenkins
id -g jenkins
Из документации :
Инструкция USER устанавливает имя пользователя (или UID) и, необязательно, группу пользователей (или GID) для использования при запуске образа и для любых инструкций RUN, CMD и ENTRYPOINT, которые следуют за ним в Dockerfile.
После выполнения этого шага любые файлы / папкисоздаваемые сценарием сборки внутри контейнера, используют соответствующего пользователя хоста, что позволяет операционной системе хоста манипулировать / удалять их без проблем.