Развертывание приложения python Flask с Jenkins и его выполнение - PullRequest
0 голосов
/ 14 марта 2020

Я пытаюсь выполнить автоматическое развертывание приложения Python Flask с помощью Jenkins, а затем запустить его с помощью команды оболочки на сервере Raspberry Pi.

Вот некоторая справочная информация ,

Перед использованием Jenkins мой процесс развертывания и выполнения был описан ниже:

  1. FTP в каталог, где находятся мои Python сценарии и Python venv
  2. Замена Flask прикладных сценариев с использованием FTP
  3. Активация виртуальной среды до Python (3.5) через терминал на Raspberry Pi ("./venv/bin/activate")
  4. Запустите myFlaskApp.py, выполнив «python myFlaskApp.py» в терминале

Теперь я интегрировал Jenkins с процессом развертывания / выполнения, описанным ниже:

  1. Изменение кода отправлено на github
  2. Jenkins автоматически извлекает файлы из github
  3. Jenkins развертывает файлы в указанных каталогах, выполняя команды оболочки
  4. Jenkins затем активирует виртуальную среду и un myFlaskApp.py путем установки скрипта. sh в терминале оболочки.

Теперь проблема , с которой я столкнулся, находится на шаге 4, потому что приложение Flask должен всегда быть живым, мой Jenkins никогда не будет «завершен успешно», он всегда будет в состоянии загрузки, так как приложение Flask работает на терминале оболочки, который использует Jenkins.

Теперь мой вопрос : Какой правильный подход я должен использовать, чтобы активировать myFlaskApp.py с Jenkins после развертывания файлов, не вызывая его "блокировки" процессом сборки?

Я прочитал о Docker, SubShell и Linux утилите "Экран". Будет ли какой-либо из этих инструментов полезен мне в моей ситуации прямо сейчас, и какой подход я должен выбрать?

1 Ответ

1 голос
/ 15 марта 2020

Простое и надежное решение (на мой взгляд) заключается в использовании Supervisor , который доступен в Debian в виде пакета supervisor. Он позволяет вам сделать из скрипта демона, такого как ваше приложение, он может порождать несколько процессов, смотреть, если приложение не обрабатывает sh, и если это так, он может запустить его снова.

Примечание о virtualenv - вам не нужно активировать venv, чтобы использовать его. Вам просто нужно указать соответствующий Python исполняемый файл (your_venv/bin/python) вместо стандартного. Например:

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