From b526cb6e890eb55baeee9bb0a003df9fe26ea25d Mon Sep 17 00:00:00 2001 From: Kamil Kokot Date: Mon, 14 Dec 2015 10:39:44 +0100 Subject: [PATCH] [Travis] Simplified build configuration, new cache management, moved build directory, made javascripts more fail-safe --- .travis.yml | 27 +++++++++++-------- etc/{travis/build-output => build}/.gitkeep | 0 etc/travis/before-install-php.ini | 5 ++++ .../opcache.ini => before-script-php.ini} | 2 +- etc/travis/{prepare => }/mongodb/1-before | 0 .../{prepare => }/mongodb/2-rebuild-cache | 0 .../{prepare => }/prepare-cached-composer | 25 ++++++++++++----- .../prepare-composer-doctrine-mongodb-odm | 7 +++++ etc/travis/{prepare => }/prepare-javascript | 6 ++--- etc/travis/prepare-memcached-extension | 18 +++++++++++++ etc/travis/prepare/prepare-mongodb | 3 --- etc/travis/prepare/prepare-php7-memcached | 10 ------- etc/travis/run-tests | 25 ----------------- etc/travis/suites/suite-default | 8 ------ 14 files changed, 67 insertions(+), 69 deletions(-) rename etc/{travis/build-output => build}/.gitkeep (100%) create mode 100644 etc/travis/before-install-php.ini rename etc/travis/{prepare/opcache.ini => before-script-php.ini} (76%) rename etc/travis/{prepare => }/mongodb/1-before (100%) mode change 100755 => 100644 rename etc/travis/{prepare => }/mongodb/2-rebuild-cache (100%) rename etc/travis/{prepare => }/prepare-cached-composer (67%) create mode 100755 etc/travis/prepare-composer-doctrine-mongodb-odm rename etc/travis/{prepare => }/prepare-javascript (79%) create mode 100755 etc/travis/prepare-memcached-extension delete mode 100755 etc/travis/prepare/prepare-mongodb delete mode 100755 etc/travis/prepare/prepare-php7-memcached delete mode 100755 etc/travis/run-tests delete mode 100755 etc/travis/suites/suite-default diff --git a/.travis.yml b/.travis.yml index 07c70e4ff8..7e10f0d874 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,7 @@ language: php env: global: - SYLIUS_CACHE_DIR=$HOME/.sylius-cache - - SYLIUS_BUILD_DIR=etc/travis/build-output + - SYLIUS_BUILD_DIR=etc/build cache: directories: @@ -32,21 +32,22 @@ matrix: before_install: - mkdir -p $SYLIUS_CACHE_DIR + - phpenv config-rm xdebug.ini || true + + - etc/travis/prepare-memcached-extension + + - phpenv config-add etc/travis/before-install-php.ini + - composer self-update - - if [ $TRAVIS_PHP_VERSION == "7.0" ]; then etc/travis/prepare/prepare-php7-memcached; fi - - if [ $TRAVIS_PHP_VERSION != "7.0" ]; then etc/travis/prepare/prepare-mongodb; fi - - - cat etc/travis/prepare/opcache.ini >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - - - echo "extension = memcached.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini - - echo "" > ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini - - echo "memory_limit=4096M" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini - + - etc/travis/prepare-composer-doctrine-mongodb-odm - composer install --no-interaction --prefer-dist --no-scripts + - composer run-script travis-build --no-interaction before_script: + - phpenv config-add etc/travis/before-install-php.ini + - app/console doctrine:database:create --env=test_cached - app/console cache:warmup --env=test_cached --no-debug @@ -61,7 +62,11 @@ before_script: - php -i script: - - etc/travis/run-tests default + - bin/phpspec run -f dot + - bin/behat --strict -f progress -p cached + + - etc/travis/prepare-javascript + - bin/behat --strict -f progress -p javascript_cached || bin/behat --strict -f progress -p javascript_cached --rerun before_cache: - yes 'Y' | rm -fr vendor/symfony-cmf/create-bundle/Resources/public/vendor/* diff --git a/etc/travis/build-output/.gitkeep b/etc/build/.gitkeep similarity index 100% rename from etc/travis/build-output/.gitkeep rename to etc/build/.gitkeep diff --git a/etc/travis/before-install-php.ini b/etc/travis/before-install-php.ini new file mode 100644 index 0000000000..480ab7098b --- /dev/null +++ b/etc/travis/before-install-php.ini @@ -0,0 +1,5 @@ +; Miscellaneous +memory_limit = 4096M + +; Extensions +extension = memcached.so diff --git a/etc/travis/prepare/opcache.ini b/etc/travis/before-script-php.ini similarity index 76% rename from etc/travis/prepare/opcache.ini rename to etc/travis/before-script-php.ini index 689ba2a488..6a30a5c032 100644 --- a/etc/travis/prepare/opcache.ini +++ b/etc/travis/before-script-php.ini @@ -8,4 +8,4 @@ opcache.max_accelerated_files = 32531 opcache.interned_strings_buffer = 8 opcache.validate_timestamps = 0 opcache.save_comments = 1 -opcache.fast_shutdown = 0 +opcache.fast_shutdown = 0 ; switching on causes "zend_mm_heap corrupted" errors diff --git a/etc/travis/prepare/mongodb/1-before b/etc/travis/mongodb/1-before old mode 100755 new mode 100644 similarity index 100% rename from etc/travis/prepare/mongodb/1-before rename to etc/travis/mongodb/1-before diff --git a/etc/travis/prepare/mongodb/2-rebuild-cache b/etc/travis/mongodb/2-rebuild-cache similarity index 100% rename from etc/travis/prepare/mongodb/2-rebuild-cache rename to etc/travis/mongodb/2-rebuild-cache diff --git a/etc/travis/prepare/prepare-cached-composer b/etc/travis/prepare-cached-composer similarity index 67% rename from etc/travis/prepare/prepare-cached-composer rename to etc/travis/prepare-cached-composer index 08adc14d1d..6167103315 100755 --- a/etc/travis/prepare/prepare-cached-composer +++ b/etc/travis/prepare-cached-composer @@ -12,7 +12,7 @@ function main if is_cache_fresh "$UNIQUE_KEY"; then restore_composer_lock_from_cache $UNIQUE_KEY else - rebuild_cache_hook $1 + rebuild_cache_hook $1 $UNIQUE_KEY store_composer_lock_in_cache $UNIQUE_KEY fi @@ -40,14 +40,23 @@ function restore_composer_lock_from_cache function is_cache_fresh { if [ -f "$SYLIUS_CACHE_DIR/composer-$1.lock" ] \ - && [ -f "$SYLIUS_CACHE_DIR/composer-$1.json.md5sum" ]; then - current_md5sum=`file_md5sum composer.json` - previous_md5sum=`cat $SYLIUS_CACHE_DIR/composer-$1.json.md5sum` + && [ -f "$SYLIUS_CACHE_DIR/composer-$1.json.md5sum" ] \ + && [ -f "$SYLIUS_CACHE_DIR/composer-$1.lock.md5sum" ]; then + current_json_md5sum=`file_md5sum composer.json` + previous_json_md5sum=`cat $SYLIUS_CACHE_DIR/composer-$1.json.md5sum` + + current_lock_md5sum=`file_md5sum composer.lock` + previous_lock_md5sum=`cat $SYLIUS_CACHE_DIR/composer-$1.lock.md5sum` echo "Found previous cache" - echo "Previous composer.json md5sum: $current_md5sum" - echo "Current composer.json md5sum: $previous_md5sum" - if [ $current_md5sum = $previous_md5sum ]; then + + echo "Previous composer.json md5sum: $current_json_md5sum" + echo "Current composer.json md5sum: $previous_json_md5sum" + + echo "Previous composer.lock md5sum: $current_lock_md5sum" + echo "Current composer.lock md5sum: $previous_lock_md5sum" + + if [ $current_json_md5sum = $previous_json_md5sum ] && [ $current_lock_md5sum = $previous_lock_md5sum ]; then return 0 else return 1 @@ -81,6 +90,8 @@ function before_hook # Argument 1: Dir with scripts function rebuild_cache_hook { + file_md5sum composer.lock > $SYLIUS_CACHE_DIR/composer-$2.lock.md5sum + if [ -f "$1/2-rebuild-cache" ]; then echo "Executing rebuild_cache_hook" bash "$1/2-rebuild-cache" diff --git a/etc/travis/prepare-composer-doctrine-mongodb-odm b/etc/travis/prepare-composer-doctrine-mongodb-odm new file mode 100755 index 0000000000..2d4ccf981b --- /dev/null +++ b/etc/travis/prepare-composer-doctrine-mongodb-odm @@ -0,0 +1,7 @@ +#!/bin/bash + +if [ $TRAVIS_PHP_VERSION == "7.0" ]; then + exit 0 +fi + +bash etc/travis/prepare-cached-composer etc/travis/mongodb diff --git a/etc/travis/prepare/prepare-javascript b/etc/travis/prepare-javascript similarity index 79% rename from etc/travis/prepare/prepare-javascript rename to etc/travis/prepare-javascript index eabd09d7eb..d944c8d0cd 100755 --- a/etc/travis/prepare/prepare-javascript +++ b/etc/travis/prepare-javascript @@ -17,10 +17,8 @@ fi # Running Selenium with ChromeDriver java -jar $SYLIUS_CACHE_DIR/selenium.jar -Dwebdriver.chrome.driver=$SYLIUS_CACHE_DIR/chromedriver > $SYLIUS_BUILD_DIR/selenium.log 2>&1 & -vendor/lakion/mink-debug-extension/travis/tools/wait-for-port 9515 # Chromedriver port -vendor/lakion/mink-debug-extension/travis/tools/wait-for-port 4444 # Selenium2 port - # Running webserver app/console server:run 127.0.0.1:8080 --env=test_cached --router=app/config/router_test_cached.php --no-debug > $SYLIUS_BUILD_DIR/webserver.log 2>&1 & -vendor/lakion/mink-debug-extension/travis/tools/wait-for-port 8080 # Webserver port +# Not the best solution, but it works! :) +sleep 3 diff --git a/etc/travis/prepare-memcached-extension b/etc/travis/prepare-memcached-extension new file mode 100755 index 0000000000..72b3be1968 --- /dev/null +++ b/etc/travis/prepare-memcached-extension @@ -0,0 +1,18 @@ +#!/bin/bash + +if [ $TRAVIS_PHP_VERSION != "7.0" ]; then + exit 0 +fi + +if [ ! -f $SYLIUS_CACHE_DIR/memcached.so ]; then + git clone -b php7 https://github.com/php-memcached-dev/php-memcached.git php-memcached + cd php-memcached + + phpize + ./configure + make + + cp modules/memcached.so $SYLIUS_CACHE_DIR +fi + +cp $SYLIUS_CACHE_DIR/memcached.so `php -i | grep extensions | awk '{ print $5 }'` diff --git a/etc/travis/prepare/prepare-mongodb b/etc/travis/prepare/prepare-mongodb deleted file mode 100755 index 229108065d..0000000000 --- a/etc/travis/prepare/prepare-mongodb +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/bash - -bash etc/travis/prepare/prepare-cached-composer etc/travis/prepare/mongodb diff --git a/etc/travis/prepare/prepare-php7-memcached b/etc/travis/prepare/prepare-php7-memcached deleted file mode 100755 index cdb18beb6e..0000000000 --- a/etc/travis/prepare/prepare-php7-memcached +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -git clone -b php7 https://github.com/php-memcached-dev/php-memcached.git php-memcached -cd php-memcached - -phpize -./configure -make - -cp modules/memcached.so `php -i | grep extensions | awk '{ print $5 }'` diff --git a/etc/travis/run-tests b/etc/travis/run-tests deleted file mode 100755 index 8a954a14d3..0000000000 --- a/etc/travis/run-tests +++ /dev/null @@ -1,25 +0,0 @@ -#!/bin/bash - -EXIT_STATUS=0 - -IFS=$'\n' - -echo "Date and time (before running tests): `date`" - -for command in `cat $(dirname "$0")/suites/suite-$1` -do - if [ `echo "$command" | grep "^\s*#"` ] - then - continue - fi - - echo "----------------------------------------------------------------------------" - echo "Date and time: `date`" - echo "Running: $command" - echo "$command" | xargs -0 /bin/bash -c || EXIT_STATUS=$? - echo "" -done - -echo "Date and time (after running tests): `date`" - -exit $EXIT_STATUS \ No newline at end of file diff --git a/etc/travis/suites/suite-default b/etc/travis/suites/suite-default deleted file mode 100755 index 688b3fc7cd..0000000000 --- a/etc/travis/suites/suite-default +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -bin/phpspec run -f dot - -bin/behat --strict -f progress -p cached - -etc/travis/prepare/prepare-javascript - -bin/behat --strict -f progress -p javascript_cached