Codeship - беслатный CI-сервер для приватного репозитория (Symfony 5 functional tests)

Начал использовать codeship как CI для symfony5 приватного репозитория на github.

Впечатления положительные. Можно настроить CI через codeship веб-интерфейс, не добавляя не единого нового файла в проект.

Итак, для codeshipCI + private repo нам нужно:

1. Авторизоваться в codeship и добавить репозиторий проекта, предоставив пермишены для codeship: Нажать New Project, выбрать репозиторий проекта из Github или Bitbucket (а также GitLab).

Codeship connect private repository

После авторизации репозитория, 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.

Codeship пример добавления переменной Environment DATABASE_URL для подключения к тестовой базе данных Symfony WebTestCase

Теперь мы можем смело раскоментировать строки из пункта 3.1:

php bin/console doctrine:database:create
php bin/console doctrine:schema:update --force

Теперь в новых билдах будет накатываться база данных и гоняться WebTestCase без ошибок подключения к базе даных.

Codeship CI - статус каждого коммита приватного git-репозитория виден на github

Статусы билдов codeship будут видны в github (зеленая галочка или красный крестик). Ссылка Details приведет на страницу с полным выводом билда CodeShip.

 
 
 
 

icon Комментарии 0

Ваш комментарий к статье.. (для авторизованных)

ctrl+enter

icon Вход в систему

зарегистрироваться