2015-06-17 5 views
1

При работе с пакетом laravel 5.1+ у меня есть необходимость запуска автоматических тестов через travis-ci.org. Разница с регулярными автоматическими тестами - это требование включить этот пакет в структуру и задать конкретные параметры конфигурации для запуска тестов.Конфигурация Travis для композиционных пакетов

Так что требование было бы:

  • установить Laravel
  • добавить свой пакет в зависимости
  • установить некоторый Travis специфических конфигураций, как доступ к базе данных Трэвиса
  • прогоны миграции Laravel
  • выполнение миграция, специфичная для пакета, или запуск команды ремесленника
  • выполнение отдельных модульных тестов

Я искал везде; спросил по телефону laravel forums, спросил в чат-сообществе travis и увидел, что this topic закрыт как слишком локализованный (хотя ответ, безусловно, был бы полезен сейчас). Я надеюсь, что мой вопрос будет оставаться открытым.

В это время у меня следующая конфигурация:

language: php 

php: 
    - 5.5 
    - 5.6 
    - hhvm 

addons: 
    hosts: 
    - system.hyn.me 
    - tenant.hyn.me 

before_install: 
    - sudo composer self-update 

install: 
    - composer create-project laravel/laravel 
    - cd ./laravel 
    - composer require hyn-me/multi-tenant ~0.1.0 
    - composer update 


before_script: 
    - cp .env.travis .env 
    - export APP_ENV="testing" 
    - php artisan migrate -q -n --path ./vendor/hyn-me/multi-tenant/src/migrations 
    - cd ./vendor/hyn-me/multi-tenant 

script: phpunit 

Но мое знание Travis (до сих пор) ограниченно и прежде чем отправить в ненужной количестве фиксаций, чтобы исправить свои проблемы, я бы предпочел ваше мнение о том, что было бы хорошим методом для проверки интеграции в рамки.

Ps. это касается пакета hyn/multi-tenant.

Посоветуйте, как сохранить этот вопрос как можно более общий, было бы полезно. Надеюсь, что без явного упоминания передовой практики и запроса интеграции в примеры структуры помогает определить объем ответов.

ответ

2

Так что после нескольких недель толкания в трейвисе я наконец сделал эту работу.

.travis.yml:

language: php 

sudo: true 

php: 
    - 5.5 
    - 5.6 
    - 7.0 
    - hhvm 

addons: 
    hosts: 
    - system.hyn.me 
    - tenant.hyn.me 

install: 
    # fix ipv6 issue that prevented composer requests and resulted in failing builds 
    - sudo sh -c "echo 'precedence ::ffff:0:0/96 100' >> /etc/gai.conf" 
    # updates composer on travis 
    - travis_retry composer self-update 
    # clear composer cache, might speed up finding new tags 
    - travis_retry composer clear-cache 
    # set the global github token, so connections won't be cancelled 
    - composer config -g github-oauth.github.com $GITHUB_TOKEN 
    # create a new database for the hyn connection 
    - mysql -e 'create database hyn;' -uroot 
    - mysql -e "grant all privileges on *.* to 'travis'@'localhost' with grant option;" -uroot 
    # create a new laravel project in the subfolder laravel (default composer behaviour) 
    - composer create-project laravel/laravel 
    # set global variables 
    - export DB_USERNAME=travis DB_DATABASE=hyn DB_PASSWORD= QUEUE_DRIVER=sync 

script: 
    # run the script calling unit tests and so on 
    - ./scripts/travis.sh 

after_script: 
    - if [[ $TRAVIS_PHP_VERSION != '7.0' ]]; then php vendor/bin/ocular code-coverage:upload --format=php-clover ${TRAVIS_BUILD_DIR}/coverage.clover; fi 

И скрипты/travis.sh

#!/bin/bash 

# e causes to exit when one commands returns non-zero 
# v prints every line before executing 
set -ev 

cd ${TRAVIS_BUILD_DIR}/laravel 

BRANCH_REGEX="^(([[:digit:]]+\.)+[[:digit:]]+)$" 

if [[ ${TRAVIS_BRANCH} =~ $BRANCH_REGEX ]]; then 
    echo "composer require ${TRAVIS_REPO_SLUG}:${TRAVIS_BRANCH}" 
    composer require ${TRAVIS_REPO_SLUG}:${TRAVIS_BRANCH} 
else 
    echo "composer require ${TRAVIS_REPO_SLUG}:dev-${TRAVIS_BRANCH}" 
    # development package of framework could be required for the package 
    composer require hyn-me/framework "dev-master as 0.1.99" 
    composer require "${TRAVIS_REPO_SLUG}:dev-${TRAVIS_BRANCH}#${TRAVIS_COMMIT}" 
fi 

# moves the unit test to the root laravel directory 
cp ./vendor/${TRAVIS_REPO_SLUG}/phpunit.travis.xml ./phpunit.xml 

phpunit 
# phpunit --coverage-text --coverage-clover=${TRAVIS_BUILD_DIR}/coverage.clover 

Этот код может измениться из-за новые версии Laravel или изменения в Travis. Если это так, вы найдете последнюю версию here.

Смежные вопросы