20 January 2018

Малюсенький CI вашего Symfony проекта за 2 минуты

PHPSymfony
Без воды о том, как за 10 минут сделать:
1.Проверяем ваш composer.json на серьезные и несерьезные ошибки, вроде неоптимального autoload
2.Проверяем ваш composer.lock на security уязвимости в пакетах
3.Проверяем вашу базу данных, что ничего не забыли
4.Проверяем ваши YAML файлы
5.Проверяем Coding Style по Symfony

Меня удивляет, почему многие не используют данный функционал в своих проектах, которые уже давно работают на проде. Туториал очень маленький, но зато все по делу. И я все же надеюсь, что вы сможете подчеркнуть себе что-нибудь из данного материала.

1)Проверяем ваш composer.json на серьезные и несерьезные ошибки, вроде неоптимального autoload:
./composer.phar validate --no-check-all --strict

2)Проверяем ваш composer.lock на уязвимости в пакетах:
php vendor/bin/security-checker security:check
В случае, если в базе данных будут обнаружены какие-то уязвимости с тем или иным пакетом, нам покажется вот такая картинка:
image
И в CI вернется статус, что программа была некорректно завершена, что поломает билд и привлечет внимание разработчика.
Подробнее о проекте — security.sensiolabs.org
База данных — security.sensiolabs.org/database

3)Проверяем вашу базу данных
php bin/console doctrine:schema:validate -e=prod
Ситуация:
Разработчик внес изменения в сущности. Но забыл создать миграцию, а мы ведь нормальные и используем миграции для того, чтобы менять что-то в базе на проде? А тут еще и тимлид пропустил, что нет миграции на новые изменения. Выполняйте эту команду после того, как накатили все миграции на базу данных. Команда проверит, что изменений в бд в соответствии с маппингом сущностей больше никаких не требуется, что дает 100% гарантии, что никто не забыт, ничего не забыто.

4)Проверяем ваши YAML файлы
Устанавливаем matthiasnoback/symfony-config-test для тестирования наших YAML файлов в проекте:
php bin/console lint:yaml app/config/
php bin/console lint:yaml src/AppBundle/Resources/config/

5.Проверяем Coding Style по Symfony
Устанавливаем escapestudios/symfony2-coding-standard и squizlabs/php_codesniffer, далее делаем следующее:
php vendor/bin/phpcs ./src -p --encoding=utf-8 --extensions=php --ignore=Tests --standard=./vendor/escapestudios/symfony2-coding-standard/Symfony2
В случае, если есть нарушения, мы получим примерно такую картину с полным описанием:
image
Tags:symfonycontinuous integrationphpsecurity
Hubs: PHP Symfony
+20
9.5k 96
Comments 7