Рубрики
Без рубрики

Команда выполнения трюков с подпроцессором – проектирование систем CI / CD

Самый важный шаг в любом процессе непрерывного интеграции является тот, который выполняет построить инструкцию … Помечено с Python, подпроцесс, CI, AnderiveDelivery.

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

Содержание принципов простоты и практичности, сегодня мы посмотрим на продолжение серии на Проектирование систем CI/CD с нашей реализацией сценария исполнения.

Предыдущие главы в серии уже установлены Создание директив реализовать. Они охватывали формат и местоположение файла спецификации сборки. А также Докерная среда в котором он работает и его ограничения.

Исполнение с использованием подпроцесс

Большинство директив, поставляемых в файле spec yaml, представляют собой списки команд оболочки. Итак, давайте посмотрим на то, как Python’s подпрокат Модуль помогает нам в этой ситуации.

Нам нужно выполнить команду, дождитесь его завершения, проверьте код выхода и распечатайте любой выход, который отправляется в STDOUT или STDERR. У нас есть выбор между Позвоните () , check_call () С check_output () и Беги () Все это обертки вокруг нижнего уровня Popen () Функция, которая может обеспечить больше гранулированного контроля процесса.

Это Беги () Функция является более недавним дополнением от Python 3.5. Он обеспечивает необходимое выполнение, блок и проверить поведение, которое мы ищем, поднимая НазываетсяProcessError Исключение всякий раз, когда он находит неудачу.

Также заметки, дрожь Модуль – это бесплатная библиотека, которая предоставляет некоторые утилиты, чтобы помочь вам в создании вызывающих вызовов подпроцесс. Это обеспечивает Сплит () Функция, которая достаточно умна, чтобы правильно отформатировать список, данный строкой командной строки. А также цитата () чтобы помочь побег Команды оболочки и избегайте уязвимостей впрыска оболочки.

Соображения безопасности

Думая об этом на минуту, осознайте, что вы пишете систему выполнения, которая запускает инструкции командной строки, как написано третьей стороной. Он имеет значительные последствия безопасности и является основной причиной, по которой большинство онлайн-сервисов сборки не позволяют вам снижаться на этот уровень детализации.

Так что мы можем сделать, чтобы смягчить риски?

Читать дальше …

Оригинал: “https://dev.to/tryexceptpass/command-execution-tricks-with-subprocess-designing-ci-cd-systems-5fg3”