Как сделать CI/CD в проекте с Jenkins и GitHub?
DevOps: - Задача!
Почему автоматизация?
Автоматизация — один из ключевых аспектов DevOps и гибкой разработки. Интернет, возможности подключения и программные технологии повысили ожидания клиентов в отношении производительности, надежности и качества услуг. А поскольку каждая организация занимается программным обеспечением, предприятия вынуждены реагировать быстрее, чем когда-либо прежде, когда речь идет об улучшении функций продукта, устранении проблем, обслуживании клиентов или даже о рыночной конкуренции и тенденциях.
Организации отреагировали на это внедрением современных стратегий жизненного цикла разработки программного обеспечения (SDLC), таких как DevOps, которые оптимизируют организационные, технологические и инструментальные рабочие процессы, чтобы быстрее и эффективнее предоставлять качественные функции программного обеспечения конечным пользователям. Быстрое реагирование на требования клиентов часто сопровождается устранением узких мест процесса и заменой ручных задач автоматизацией. В результате гибкость и скорость помогают организациям согласовывать каждый шаг рабочего процесса SDLC с бизнес-целями в контексте меняющихся требований конечных пользователей и рынка.
КАК ЭТО СДЕЛАТЬ??
мы собираемся автоматизировать нашу разработку и развертывание проекта с помощью этого: -
Прототип :-
- Создайте образ контейнера с установленными Python3 и Keras или numpy с помощью файла dockerfile.
- Когда мы запускаем этот образ, он должен автоматически запускать обучение модели в контейнере.
- Создайте цепочку заданий Задание1, Задание2, Задание3, Задание4 и Задание5, используя построить плагин конвейера в Jenkins
- Задание 1: автоматическое получение репозитория Github, когда некоторые разработчики отправляют репозиторий на Github.
- Задание 2: просмотрев код или программный файл, Дженкинс должен автоматически запустить соответствующее программное обеспечение для машинного обучения, установить интерпретатор, установить контейнер образа, чтобы развернуть код и начать обучение (например, если код использует CNN, тогда Дженкинс должен запустить контейнер, в котором уже установлено все программное обеспечение, необходимое для обработки cnn).
- Задание 3. Обучите свою модель и спрогнозируйте точность или показатели.
- Задание 4 . Если точность метрик меньше 80 % , необходимо настроить архитектуру модели машинного обучения.
- Задание 5: переобучить модель или сообщить, что создается лучшая модель.
- 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: — загрузите этот образ, чтобы запустить его в своем контейнере.