Пример веб-приложения из туториала по Django для изучения DevOps-практик.
Простое приложение для голосования. В данный момент есть только одно голосование: "Will it work?", с двумя вариантами ответа "Yes" и "No".
Приложение запаковано в docker-образ и доступно в DockerHub.
Пайплайн состоит из трех сегментов.
- CI-сегмент с проверками кода (YML-файл).
- Сегмент со сборкой образа Docker и пушем в DockerHub (YML-файл).
- Сегмент с деплоем на сервер с помощью Jenkins (YML-файл).
Этот пайплайн срабатывает, если открывается pull-request в ветку main.
Порядок действий:
- Получение кодовой базы (checkout).
- Проверка синтаксиса и его рекомендаций в Dockerfile, с помощью
hadolint. - Проверка синтаксиса кода с помощью pylint.
- Установка python и зависимостей для него (см. файл requirements.txt)
- Запуск тестов с помощью pytest.
- В случае провала любого из предыдущих этапов отправляется уведомление в телеграме.
- В случае успеха, также отправляется сообщение в телеграме.
Этот пайплайн собирает образ Docker и пушит его в DockerHub в случае если pull-request закрыт и в нем были затронуты файлы Dockerfile и manage.py.
Этот пайплайн деплоит приложение на сервер. Он запускается только если успешно сработал предыдущий workflow.
Пайплайн состоит из двух частей:
- Workflow-файла, который триггерит
работу Jenkins с помощью
curlи API. - Jenkinsfile, в котором описана процесс деплоя. Он состоит в
том, чтобы подключиться к серверу, зайти в нужную папку и выполнить ряд
комманд (
git pull,docker compose pullи пр.).