- Laravel 12 (PHP 8.2+) c простым HTML-листингом задач (
GET /). - Модель
App\Models\Task, миграцияcreate_tasks_tableи сидTaskSeeder. - Health-check JSON-эндпоинт
GET /health, который проверяет подключение к БД. - Лог-файлы по умолчанию пишутся в
storage/logs/laravel.log.
- PHP 8.2+ с расширениями, необходимыми Laravel (pdo_mysql, mbstring, xml и т.д.).
- Composer 2.x.
- MySQL 8.x (или совместимый сервер, например MariaDB 10.6+).
- Node.js 18+ и npm (опционально, только если потребуется собрать фронтенд-ассеты).
- Скопировать переменные окружения:
cp .env.example .env
- В
.envуказать параметры подключения к MySQL и сгенерировать ключ приложения:composer install php artisan key:generate
- Применить миграции и загрузить демо-данные:
php artisan migrate --seed
- Запустить встроенный веб-сервер:
php artisan serve --host=0.0.0.0 --port=8000
- Проверить работу:
http://localhost:8000/- список задач.http://localhost:8000/health- health-check (возвращает{"app":"up","database":"up","timestamp":"..."}при успешном подключении к БД).
- Миграции:
database/migrations/. - Сиды:
database/seeders/TaskSeeder.php. - Основной маршрут:
routes/web.php. - Просмотр маршрутов:
php artisan route:list. - Запуск unit-тестов (их пока нет, но пайплайн должен уметь):
php artisan test. - Логи:
storage/logs/laravel.log(понадобится для настройки log forwarding).
Выполнить следующие шаги. Платформа CI/CD на выбор: Jenkins или GitLab CI.
-
Подготовка инфраструктуры
- Развернуть виртуальную машину (Linux, предпочтительно Ubuntu 22.04+).
- Установить PHP, Composer, веб-сервер/прокси (nginx или Apache) и MySQL.
- Настроить .env через переменные окружения или секреты, без хранения паролей в репозитории.
- Выполнить
php artisan migrate --seedв целевой среде.
-
Настройка CI/CD
- Описать pipeline (Jenkinsfile или
.gitlab-ci.yml). - Минимальные стадии:
lint/test→build→deploy. - В
lint/testвыполнитьcomposer install --no-dev(или--prefer-dist) иphp artisan test. - В
buildсобрать артефакт приложения (например, архив с vendor, ресурсами, env-примером). - В
deployзадеплоить на VM, выполнить миграции/сиды и перезапустить сервисы. - Приложить инструкцию, как воспроизвести pipeline (требования к агентам, переменным и т.д.).
- Описать pipeline (Jenkinsfile или
-
Мониторинг и наблюдаемость
- Настроить использование
GET /healthкак liveness/readiness probe (HTTP 200/500). - Организовать сбор логов Laravel (например, ротация + доставка в journald/ELK/CloudWatch - на выбор).
- Реализовать базовые метрики (варианты: экспортер, интеграция с Prometheus/node-exporter, алерты по логам или состоянию сервиса). Допускаются открытые решения (Netdata, Grafana Agent, Prometheus + Alertmanager и т.д.).
- Настроить использование
-
Документация и сдача работы
- README или отдельный файл с описанием:
- архитектуры и схемы развёртывания;
- требований к окружению;
- куда выкладываются логи и метрики;
- как запустить/перезапустить приложение.
- Скриншоты/экспорт дашбордов и алертов (если есть).
- Доступ к пайплайну (скринкасты, публичный URL или описание шагов для ревью).
- README или отдельный файл с описанием:
- Автоматизация: минимальное количество ручных шагов, наличие пайплайна, инфраструктура как код (Terraform/Ansible) приветствуется.
- Наблюдаемость: наличие рабочих health-check'ов, логов и метрик.
- Надёжность: корректная обработка секретов, миграций, перезапусков сервисов.
- Документация: чёткие инструкции, возможность воспроизвести окружение без дополнительных вопросов.
- Бонусы: контейнеризация, Helm Chart, IaC, интеграция с S3 для бэкапов.