Как сделать CI/CD в проекте с Jenkins и GitHub?

DevOps: - Задача!

Почему автоматизация?

Автоматизация — один из ключевых аспектов DevOps и гибкой разработки. Интернет, возможности подключения и программные технологии повысили ожидания клиентов в отношении производительности, надежности и качества услуг. А поскольку каждая организация занимается программным обеспечением, предприятия вынуждены реагировать быстрее, чем когда-либо прежде, когда речь идет об улучшении функций продукта, устранении проблем, обслуживании клиентов или даже о рыночной конкуренции и тенденциях.

Организации отреагировали на это внедрением современных стратегий жизненного цикла разработки программного обеспечения (SDLC), таких как DevOps, которые оптимизируют организационные, технологические и инструментальные рабочие процессы, чтобы быстрее и эффективнее предоставлять качественные функции программного обеспечения конечным пользователям. Быстрое реагирование на требования клиентов часто сопровождается устранением узких мест процесса и заменой ручных задач автоматизацией. В результате гибкость и скорость помогают организациям согласовывать каждый шаг рабочего процесса SDLC с бизнес-целями в контексте меняющихся требований конечных пользователей и рынка.

КАК ЭТО СДЕЛАТЬ??

мы собираемся автоматизировать нашу разработку и развертывание проекта с помощью этого: -

  1. Гитхаб
  2. Дженкинс
  3. Докер и Докер Хаб
  4. Linux/Windows (здесь Debian)

Прототип :-

  1. Создайте образ контейнера с установленными Python3 и Keras или numpy с помощью файла dockerfile.
  2. Когда мы запускаем этот образ, он должен автоматически запускать обучение модели в контейнере.
  3. Создайте цепочку заданий Задание1, Задание2, Задание3, Задание4 и Задание5, используя построить плагин конвейера в Jenkins
  4. Задание 1: автоматическое получение репозитория Github, когда некоторые разработчики отправляют репозиторий на Github.
  5. Задание 2: просмотрев код или программный файл, Дженкинс должен автоматически запустить соответствующее программное обеспечение для машинного обучения, установить интерпретатор, установить контейнер образа, чтобы развернуть код и начать обучение (например, если код использует CNN, тогда Дженкинс должен запустить контейнер, в котором уже установлено все программное обеспечение, необходимое для обработки cnn).
  6. Задание 3. Обучите свою модель и спрогнозируйте точность или показатели.
  7. Задание 4 . Если точность метрик меньше 80 % , необходимо настроить архитектуру модели машинного обучения.
  8. Задание 5: переобучить модель или сообщить, что создается лучшая модель.
  9. Job6 для монитора: если контейнер, в котором запущено приложение. происходит сбой по какой-либо причине, то это задание должно автоматически снова запускать контейнер с того места, где осталась последняя обученная модель.

шаг:-1

Создание Docker-файла

создание образа Docker с помощью команды: -

docker build -t <imagename>:<tagname>

шаг 2

Загружаем наш проект из контейнера Docker для тестирования.

команды :-└──╼ #docker exec -it ‹сборка контейнера › bash

например: - └──╼ #docker exec -it 5530d9ac26f9b5ef420a811518655af42397cd934a82a1a60b41975f3804c457 bash

шаг 3:-

Открытие каталога проекта

шаг 4:-

шаг 5:-

Работа 2: -

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

шаг 6:-

Работа 3:-

Job3 предназначен для обучения модели и сохранения точности в файле precision.txt. Я использую модель mnistdigits, набор данных будет загружен автоматически.

Задание 3 будет запущено автоматически только после успешного выполнения задания2.

шаг 7: -

Работа 4:-

Job4 должен проверить точность обученной модели, если точность больше, чем 90%, то она снова перейдет к job3 и обучит модель, пока мы не получим 90%.

шаг 8:-

Работа 5 :-

Как только задание 4 достигнет точности, оно запустит задание 5, которое отправит письмо пользователю.

шаг 9:-

Работа 6:-

Это задание будет отслеживать контейнер. Если контейнер существует, это задание вызовет задание 2 и перезапустит контейнер.

шаг 10:-

Работа 7 :-

построить представление Pip Line

Отправка изображения в Docker Hub :-

sudo docker push имя пользователя/имя изображения

чтобы вытащить это изображение, используйте команду: -

docker push sivolko/mlops:tagname

Ссылка:-

Исходный код Github: - посетите здесь для кодов ML

DockerHub: — загрузите этот образ, чтобы запустить его в своем контейнере.