Начал использовать codeship как CI для symfony5 приватного репозитория на github.
Впечатления положительные. Можно настроить CI через codeship веб-интерфейс, не добавляя не единого нового файла в проект.
Итак, для codeshipCI + private repo нам нужно:
1. Авторизоваться в codeship и добавить репозиторий проекта, предоставив пермишены для codeship: Нажать New Project, выбрать репозиторий проекта из Github или Bitbucket (а также GitLab).
После авторизации репозитория, codeship[bot] сам добавит ssh deploy-ключ в git-репозиторий для того, чтобы codeship CI-сервер имел права на клонирование репозитория. Пример автоматически-добавленного ключа:
2. Далее заходим в свеже-созданный проект на codeship (нажимаем Project Settings) и настраиваем CI (как минимум, нам понадобится вкладка Tests).
3. Tests:
3.1 Select your technology to prepopulate basic commands > Выберем Symfony. Codeship предложит такие команды:
# We support all major PHP versions. Please see our documentation for a full list. # https://documentation.codeship.com/basic/languages-frameworks/php/ # # By default we use the latest PHP version from the 5.5 release branch. phpenv local 7.2 # Install extensions via PECL #pecl install -f memcache # Prepare cache directory and install dependencies composer install --no-interaction # Prepare database with Docrtine #php bin/console doctrine:database:create #php bin/console doctrine:schema:update --force
Можно выбирать одну php версию использую phpenv, добавлять любые другие команды и т.д.
3.2 Нажимаем Add Pipeline и задаем имя для нового pipeline. Контент в случае простого symfony5 проекта у нас будет очень простым, как рекомендуют официальные доки symfony:
php bin/phpunit
Либо что-то вроде этого в более старых версиях symfony:
php vendor/bin/phpunit
Нажимаем сохранить.
Уже на этом этапе на новые коммиты в master и на Pull Requests будет триггериться джоба в CodeShip. Статус билда будет виден в ГитХаб напротив каждого нового коммита. Из ГитХаб можно перейти и посмотреть полный вывод билда в CodeShip.
Функциональные тесты на codeShip
Если у вашем проекте используются функциональные тесты (наследники WebTestCase), то скорее всего вам еще понадобиться настроить коннекшен к базе данных. Для настройки коннекшена к БД в последних версиях symfony нужно указать правильные credentials для параметра DATABASE_URL. Например, это может быть:
DATABASE_URL=pgsql://db_user:db_password@127.0.0.1:5432/test
В codeship подключить базу просто. Codeship предоставляет креды для mysql, PostgreSQL и многих других популярных баз данных. Все базы находятся на 127.0.0.1 на стандартных портах.
Заходим снова в Project Settings и идем на вкладку Environment.
Добавляем новую переменную с именем DATABASE_URL и значением для неё. Мы можем использовать значения других переменные энвайромента при добавлении нового параметра. В случае использования PostgreSQL, поставим значение для DATABASE_URL:
pgsql://$PGUSER:$PGPASSWORD@127.0.0.1:5432/dbname-test
, где:
- PGUSER - значение переменной энвайромента в CodeShip, где хранится имя пользователя postgreSQL
- PGPASSWORD - значение переменной энвайромента, где хранится пароль к postgreSQL
-
знак
$
используется для того чтобы подставлялись переменные.
и сохраняем изменения. Таким образом мы переопределяем параметр DATABASE_URL из файла .env
.
Теперь мы можем смело раскоментировать строки из пункта 3.1:
php bin/console doctrine:database:create php bin/console doctrine:schema:update --force
Теперь в новых билдах будет накатываться база данных и гоняться WebTestCase без ошибок подключения к базе даных.
Статусы билдов codeship будут видны в github (зеленая галочка или красный крестик). Ссылка Details приведет на страницу с полным выводом билда CodeShip.
Комментарии 0