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

    Без воды о том, как за 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
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 7

      0

      С кодстайлом лучше все-таки php-cs-fixer или даже оба (хотя после фиксера phpcs только длину строк ловит)

        0

        Фиксер, на мой взгляд, надо запускать руками разработчику, а не исправлять код в процессе проверок.
        Мало ли что исправиться не так как положено.

          0

          никто не говорит о фиксе в ходе проверок. На CI надо с --dry-run запускать, а разработчик может себе git hook какой сделать что бы не забывать.

            0
            Я тут кстати недавно выдумал костыльный pre-commit (not production mode :D):

            #!/bin/bash
            echoerr() { echo -e "\e[1;31m$@\e[0m" 1>&2; }
            
            git diff --diff-filter=MAT --name-only --cached | while read line;
            do
               filename=$(tempfile)$(echo $line | sed 's/\//_/g');
               git show :$line > $filename;
            
               if ! eval 'phpcs --standard=./vendor/escapestudios/symfony2-coding-standard/Symfony2 --extensions=php --ignore=Tests $filename > /dev/null'; then
                    if eval 'phpcs --standard=./vendor/escapestudios/symfony2-coding-standard/Symfony2 --extensions=php --ignore=Tests $line > /dev/null'; then
                        echoerr "!!!!ВНИМАНИЕ!!!!";
                        echoerr "Кажется вы забыли сделать git add $line после того как сделали fix кодинг стайла, посмотрите git status:";
                        git status;
                    else
                        #print more information about cs
                        phpcs --standard=./vendor/escapestudios/symfony2-coding-standard/Symfony2 --extensions=php --ignore=Tests $line
                    fi;
            
                    exit 1;
               fi;
            
               rm $filename;
            done
            


            Проверяет файлы, которые изменились (удаленные игнорирует) и были добавлены в индекс (планируют попасть в коммит как раз).

            При этом делает проверку, когда забываешь сделать git add src/ после правки CS (реальный файл имеет поправленный CS, файл из версии индекса — битый):
            image
              +1

              Ну вот вам мой прекоммит хук для php-cs-fixer. Только вместо "ошибок" что мы не сделали git add он сам это делает.

        0
        посмотрите phpro/grumphp, решает уже все из коробки
          0
          До кучи можно добавить проверку чексумм вендоров — github.com/sensiolabs/checksums

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое