Здравствуйте, у меня тупой концептуальный вопрос, который не выходит нагуглить.
Есть Python скрипт который делает определенную работу по входным параметрам и складывает артефакт в файловое хранилище.
Все это дело я запускаю через Jenkins и здесь есть три варианта:
1. Просто запуск скрипта - нужно ставить зависимости и загрязнять всем этим барахлом сервер -> плохо
2. docker run моего скрипта - наверное самый правильный вариант -> правильно но медленно.
3. docker run через systemd и потом запросы все идут с помощью Jenkins через docker exec bash -c 'blabla' -> быстро, но проблема в том что когда пользователь делает отмену сборки в Jenkins (abort) процесс внутри контейнера остается висеть и мешает дальнейшей работе (PTY Jenkins не умеет делать что бы работал signal-forward в контейнер) -> плохо
Каким образом тогда это все лучше организовать?
---
Насколько вообще порочная практика делать docker run для поднятия окружения, и далее фигачить docker exec для запуска скриптов там?
1. C сборкой докерфайла под каждый сервис? Как это оркестрировать?
2. Мне не нужен pipeline мне нужен запускатор средставми Jenkins
3. Не хочу загрязнять чистые машины и поддерживать зависимости
th3mis, по поводу 1-го – тут можно рассмотреть вариант в виде docker in docker. Агент-докер стартует внутри контейнер с окружением. По окончании, джобы агент сносится вместе с работавшим контейнером (надо бы проверить что это так)
Дмитрий Шицков, Подскажите пожалуйтста, может есть какая статья или вариант у вас на примете, где jenkins в docker и запускает jenkins agent в docker который отработав удаляется? Заранее благодарен.