Подготовка проекта к автотестам в CI/CD Pipeline. Добавление окружения для тестирования рабочих Docker-образов. Создание файла подкачки в Ansible.
- 00:00:26 Постановка задачи
- 00:02:04 Доработка передачи переменных окружения
- 00:07:54 Тестовое окружение для docker-compose
- 00:11:30 Команды сборки в Makefile
- 00:13:37 Команды инициализации и остановки
- 00:15:51 Запуск Smoke и E2E тестов
- 00:17:31 Загрузка фикстур
- 00:21:28 Сквозная команда запуска
- 00:22:54 Файл подкачки
- 00:27:16 Создание Swap-файла через Ansible
- 00:29:08 Динамический расчёт размера Swap
Скрытый контент (код, слайды, ...) для подписчиков.
Открыть →Чтобы не пропускать новые эпизоды подпишитесь на наш канал @deworkerpro в Telegram
самый высокий уровень, спасибо.
Такими темпами проект закончен будет к 2040 году
И хорошо. Будут насыщенные высококачественные видео, а не впопыхах записанные недомонтированные поделки с кучей ошибок.
Хотел сначала записать простой пример по примитивной установке Jenkins. Но в итоге за неделю много чего дополнил и записал вчера 6 часов видео. Надеюсь, что после нескольких пересмотров удастся сократить до концентрированных полутора часов.
Ну отлично, спасибо! Ничего там сокращать не надо, тема серьезная, если все же сократишь, то хотелось бы иметь и не сокращенный вариант тоже. Нет возможности угадать, что может быть важно из сокращенного кому то в будущем, потому исходники тоже лучше выкладывать по возможности, видео раз в неделю новое выкладывается и как раз эти 6 часов нормально за неделю посмотреть.
Там в основном паузы, повторы и исправления. Иногда предложения по несколько раз повторяю, чтобы потом лучший вариант оставить. О разных нюансах Юлия у себя в @elisjuli_live пишет.
Теперь понятно.
Здорово же правда?
Дмитрий Елисеев У меня сервер на centos 7 какую сейчас луче всего систему учить для сервера. я Windows. ставил VirtualBox Devian 10 выливает Ubunta есть серверная?
Это просто разные семейства:
Популярнее Ubuntu и Debian. Реже используют CentOS и остальные.
Как поступить в случае, если фронтенд и бекенд находятся в разных репозиториях. Как организовать независимый набор инструментом (команды make) для каждого отдельного проекта и для всего приложения полностью? Так же заметил, что в Dockerfile много копипасты для разных окружений, что чревато ошибками. Есть ли какие-нибудь инструменты сборки Dockerfile с элементами наследования на подобии инструментов сборки конфигурации?
В простейшем случае во всех
docker-compose.yml
можно подключить общую внешнюю сеть через external network. Создание этой сети и команды запуска всех подпроектов можно поместить в ещё один координационный репозиторий наверху. В нём сделать Jenkinsfile, который будет запускать все подпроекты и выполнять интеграционные тесты. И в Jenkins настроить его так, чтобы этот pipeline запускался после завершения pipeline каждого подпроекта. Но всё это будет сложно.В более продвинутом случае при вынесении фронтенда (или при разбивке на микросервисы) прямо в репозитории фронтенда с E2E-тестами делают эмулятор API вручную или через Wiremock. Тогда фронтенд при запуске будет самодостаточен как локально, так и в Jenkins. Фронтенд и API можно будет разрабатывать и тестировать отдельно. Локально запускать всё приложение полностью не будет необходимости. Но при этом нужно будет следить за корректностью API-контрактов, чтобы быть уверенным в работоспособности всей системы без общих тестов.
Да, можно по отдельному Dockerfile собрать и запушить свой базовый php-fpm и уже наследоваться от него через
FROM registry/php-fpm:7.4
Доброй ночи, Дмитрий.
Помогите, пожалуйста, довести до ума запуск functional тестов.
Проект на Symfony.
Запуск unit тестов работает, а вот с functional никак не могу понять, как настроить работу с базой данных.
В Makefile
В тестовом dockerfile пришлось принудительно копировать composer, без этого выдавало ошибку
В phpunit.xml добавил нужные настройки
Unit тесты работают без проблем, но когда доходит до functional тестов - куча ошибок.
Первая, вроде бы простая
Но как изменить имя базы на существующую - не могу понять. Для тестового окружения настроена база с именем app.
Пробовал в phpunit.xml, в docker-compose-testing.yml явно указывать имя базы, но результата это не дало.
phpunit.xml
docker-compose-testing.yml
Как можно решить эту проблему?
Это нужно если запускаете тесты через
composer test
вместо нативного запускаbin/app.php
илиvendor/bin/phpunit
.Поищите в проекте строку с
app_test
и измените или удалите. Возможно, что это в файле.env.test
Искал через edit -> find -> find in files , но ничего не находит в phpstorm.
В .env.test нет настроек базы данных для тестирования. Попробую указать в .env_test имя базы, может поможет)
Если запускаю просто functional тесты через dev образы, то всё работает
Не пойму, почему через тестовые образы в docker-testing-compose.yml не находит базу.
Если изменить команду на такую
то вообще в консоли пишет
Префикс "_test" для тестовой базы прописан в файле doctrine.yaml Нужно закомментировать строку: dbname_suffix: '_test%env(default::TEST_TOKEN)%'
Или войти через: