Я пытаюсь использовать Jenkins для создания проекта C ++ в контейнере Docker. У меня нет проблем со сборкой в Дженкинсе или сборкой в контейнере за пределами Дженкинса.
Ниже я попробовал. Я опускаю отображение томов для ясности.
Дело 1
Следующая команда успешно запускает сборку в оболочке.
docker run --rm --interactive=true --tty=true $IMAGE make
Однако при запуске в Jenkins в качестве шага «выполнить оболочку» Docker возвращает следующую ошибку.
cannot enable tty mode on non tty input
Дело 2
Следующая команда похожа на предыдущую, но отключает интерактивность.
docker run --rm $IMAGE make
Дженкинс может успешно запустить сборку. Однако при прерывании сборки возникают серьезные проблемы. Сборка сразу помечается как прерванная, но контейнер продолжает работать до завершения сборки. Также контейнер не удаляется после выхода.
При запуске в оболочке команда строится успешно, но ее невозможно прервать. Также контейнер удаляется после выхода.
Вопрос
Кто-нибудь знает, как правильно запускать сборки в контейнерах Docker из Jenkins и сохранять ли возможность отмены сборок?
Использование любого из плагинов Jenkins не вариант, потому что вызовы Docker находятся внутри скриптов и не могут быть легко извлечены.