Когда: Перед каждым релизом
Цель: Проверить полный цикл установки с нуля
Полный цикл:
# 1. Создать проект
composer create-project drupal/cms ideal-shop --no-interaction
cd ideal-shop
# 2. Добавить зависимости
composer require drupal/commerce
composer require drupal/facets
composer require drupal/search_api
composer require drupal/pathauto
composer require drupal/metatag
# 3. Установить Drupal
vendor/bin/drush site:install standard \
--db-url=mysql://user:pass@localhost/db \
--site-name="Ideal Shop" \
--account-pass=admin \
-y
# 4. Скопировать тему
cp -r ../ideal_theme web/themes/custom/
# 5. Применить рецепты
vendor/bin/drush recipe recipes/ideal_theme_base
vendor/bin/drush recipe recipes/ideal_shop_core
# ... остальные рецепты
# 6. Проверка
curl http://localhost/
# Ожидаемый результат: HTTP 200
Проверяемые пункты:
- ✅ Все команды выполняются без ошибок
- ✅ База данных создаётся
- ✅ Все модули устанавливаются
- ✅ Тема включается
- ✅ Сайт доступен
Тест каждого рецепта отдельно:
vendor/bin/drush recipe recipes/ideal_theme_base
# Проверка:
# ✅ Тема установлена
# ✅ Базовые модули включены
# ✅ Главная страница рендерится
# Тест
curl http://localhost/ | grep "<title>Welcome"
vendor/bin/drush recipe recipes/ideal_shop_core
# Проверка:
# ✅ Commerce модули включены
# ✅ Product type создан
# ✅ Store создан
# Тест
vendor/bin/drush pm:list | grep commerce_product
vendor/bin/drush entity:list commerce_product_type
vendor/bin/drush recipe recipes/ideal_theme_catalog
# Проверка:
# ✅ Views созданы
# ✅ Facets настроены
# ✅ Каталог доступен
# Тест
curl http://localhost/catalog | grep "HTTP/1.1 200"
И так далее для всех 11 рецептов
Тест выключения/включения:
# 1. Включить всё
vendor/bin/drush recipe recipes/ideal_theme_base
vendor/bin/drush recipe recipes/ideal_shop_core
vendor/bin/drush recipe recipes/ideal_theme_catalog
# 2. Выключить Commerce
vendor/bin/drush pm:uninstall commerce_product commerce_store
# 3. Проверить что сайт работает
curl http://localhost/
# Ожидаемый результат: HTTP 200 (без ошибок)
# 4. Включить обратно
vendor/bin/drush pm:enable commerce_product commerce_store
# 5. Проверить что всё работает
curl http://localhost/catalog
# Ожидаемый результат: HTTP 200
Проверяемые сценарии:
- ✅ Выключение Commerce → сайт работает
- ✅ Выключение Catalog → сайт работает
- ✅ Выключение Search → сайт работает
- ✅ Включение обратно → всё восстанавливается
Тестируем все комбинации:
| Вариант | Рецепты | Ожидаемый результат |
|---|---|---|
| Lite | Base | Главная работает ✅ |
| Blog | Base + Blog | Главная + Блог ✅ |
| Shop | Base + Commerce + Catalog | Главная + Каталог + Товар ✅ |
| Max | Все 11 рецептов | Всё работает ✅ |
Скрипт test-deployment.sh:
#!/bin/bash
set -e
VARIANTS=("lite" "shop" "max")
for variant in "${VARIANTS[@]}"; do
echo "🧪 Testing $variant variant..."
# 1. Создать чистый Drupal
rm -rf /tmp/test-$variant
mkdir -p /tmp/test-$variant
cd /tmp/test-$variant
composer create-project drupal/recommended-project:^11 . --no-interaction
# 2. Установить зависимости
composer require drupal/commerce drupal/facets
# 3. Установить Drupal
vendor/bin/drush site:install standard \
--db-url=sqlite://db-$variant.sqlite \
-y
# 4. Копировать тему
cp -r /path/to/ideal_theme web/themes/custom/
# 5. Применить рецепты для варианта
case $variant in
"lite")
vendor/bin/drush recipe recipes/ideal_theme_base
;;
"shop")
vendor/bin/drush recipe recipes/ideal_theme_base
vendor/bin/drush recipe recipes/ideal_shop_core
vendor/bin/drush recipe recipes/ideal_theme_catalog
;;
"max")
for recipe in recipes/ideal_theme_*; do
vendor/bin/drush recipe $recipe
done
;;
esac
# 6. Тест страниц
vendor/bin/drush runserver 127.0.0.1:888$variant &
SERVER_PID=$!
sleep 3
# Главная
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:888$variant/)
if [ "$HTTP_CODE" != "200" ]; then
echo "❌ $variant: Homepage failed ($HTTP_CODE)"
kill $SERVER_PID
exit 1
fi
# Каталог (только для shop и max)
if [ "$variant" != "lite" ]; then
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1:888$variant/catalog)
if [ "$HTTP_CODE" != "200" ]; then
echo "❌ $variant: Catalog failed ($HTTP_CODE)"
kill $SERVER_PID
exit 1
fi
fi
kill $SERVER_PID
echo "✅ $variant variant passed!"
done
echo "🎉 All deployment variants tested successfully!"
Вручную проверить:
3 окружения:
Требования:
- ✅ Установка: < 5 минут
- ✅ Все рецепты: успешно
- ✅ Все страницы: HTTP 200
- ✅ Откат: без ошибок
- ✅ 3 варианта (Lite/Shop/Max): все работают
❌ Различные браузеры (Стратегия 4)
❌ Визуальные регрессии (Стратегия 4)
❌ Производительность под нагрузкой (отдельное тестирование)
После прохождения Deployment Testing → Стратегия 4: Configuration Testing
Статус: Готово к использованию
Дата: 2026-01-07