# # Travis-CI configuration file for Hubzilla # ## configure things # # see http://about.travis-ci.org/docs/user/languages/php/ for more hints language: php # use newer 'trusty' based distro, old one is 'precise' dist: trusty # use docker based containers sudo: false # Git branches whitelist to build on Travis CI branches: only: - master - dev # whitelist our tags for release deployments e.g. 2.2 - /^\d+\.\d+(\.\d+)?(-\S*)?$/ # Install additional software addons: # Install dependencies for generating API documentation with doxygen apt: packages: - doxygen - doxygen-latex - graphviz - ttf-liberation # enable and start databases on a per job basis #services: # - mariadb # - postgresql # any PHP version we want to test against, current stable phpunit requires PHP >= 7.0 php: - '7.0' - '7.1' - '7.2' # HHVM does not fulfil PHPUnit platform requirements as being compatible with PHP7 yet #- 'hhvm' # list of environments to test env: global: # used for doxygen deployment script - DOXYFILE: $TRAVIS_BUILD_DIR/util/Doxyfile # Uncomment if a newer/specific version of Doxygen should be used #- DOXY_VER: 1.8.12 # Code Coverage is slow, no need to have it in every build - PHPUCOV: "--no-coverage" # use matrix only for PHP and MySQL, all other combinations added through includes matrix: # trusty default MySQL 5.6 - DB=mysql MYSQL_VERSION=5.6 # Matrix configuration details matrix: fast_finish: true # Additional check combinations include: # PHP7.2, mariadb 10.2 - php: '7.2' env: DB=mariadb MARIADB_VERSION=10.2 CODECOV=1 # use mariadb instead of MySQL addons: mariadb: '10.2' # PHP7.2, PostgreSQL 9.6 - php: '7.2' env: DB=pgsql POSTGRESQL_VERSION=9.6 PHPUNITFILE=phpunit-pgsql.xml # Use newer postgres than 9.2 default addons: postgresql: '9.6' services: - postgresql # PostgreSQL 10 with Docker container - php: '7.2' env: DB=pgsql POSTGRESQL_VERSION=10 PHPUNITFILE=phpunit-pgsql.xml sudo: required services: - docker # PHP7.2, old precise distribution with MySQL 5.5 - php: '7.2' env: DB=mysql MYSQL_VERSION=5.5 dist: precise services: - mysql # MySQL 5.7 with Docker container - php: '7.2' env: DB=mysql MYSQL_VERSION=5.7 sudo: required services: - docker # Excludes from default matrix combinations # exclude: # - php: hhvm # env: DB=pgsql # PDO driver for pgsql is unsupported by HHVM (3rd party install for support) # cache composer downloads between runs cache: directories: - $HOME/.composer/cache #- $HOME/doxygen/doxygen-$DOXY_VER/bin # ## execute things # before_install: - travis_retry composer self-update # Start MySQL 5.7 Docker container, needs some time to come up - if [[ "$MYSQL_VERSION" == "5.7" ]]; then sudo service mysql stop; docker run -d -p 3306:3306 -e MYSQL_ALLOW_EMPTY_PASSWORD=yes mysql:5.7 && sleep 25 && docker ps; fi # Start PostgreSQL 10 Docker container, needs some time to come up - if [[ "$POSTGRESQL_VERSION" == "10" ]]; then sudo service postgresql stop; docker run -d -p 5432:5432 postgres:10-alpine && sleep 35 && docker ps; fi # Install composer dev libs install: - travis_retry composer install --optimize-autoloader --no-progress # execute any number of scripts before the test run, custom env's are available as variables before_script: # Use code coverage config for phpunit - if [[ ! -z $CODECOV ]]; then export PHPUCOV=""; fi # Some preparation tasks of environment - ./tests/travis/prepare.sh # DB specific prepare scripts - if [[ "$DB" == "mysql" ]]; then ./tests/travis/prepare_mysql.sh; fi - if [[ "$DB" == "mariadb" ]]; then ./tests/travis/prepare_mysql.sh; fi - if [[ "$DB" == "pgsql" ]]; then ./tests/travis/prepare_pgsql.sh; fi # omitting "script:" will default to phpunit script: - ./vendor/bin/phpunit $PHPUCOV -c tests/$PHPUNITFILE after_success: - cat tests/results/testdox.txt # Generate API documentation and prepare for deployment - ./tests/travis/gen_apidocs.sh after_failure: - cat tests/results/testdox.txt # Deploying release and API documentation to GitHub before_deploy: - if [[ "$CODECOV" == "1" ]]; then zip -9 -r -q tests/hubzilla-testresults.zip tests/results; fi deploy: - provider: pages skip_cleanup: true local_dir: $TRAVIS_BUILD_DIR/doc/html github_token: $GH_TOKEN on: repo: redmatrix/hubzilla branch: master condition: '(-n "$GH_TOKEN") && ("$TRAVIS_JOB_NUMBER" == "${TRAVIS_BUILD_NUMBER}.1")' # add API documentation to release, could also be used to provide full packages if we want to drop vendor from our repo - provider: releases skip_cleanup: true api_key: $GH_TOKEN file: 'doc/hubzilla-api-documentation.zip' on: repo: redmatrix/hubzilla tags: true condition: '(-n "$GH_TOKEN") && ("$TRAVIS_JOB_NUMBER" == "${TRAVIS_BUILD_NUMBER}.1")' # add code coverage and test results to release - provider: releases skip_cleanup: true api_key: $GH_TOKEN file: 'tests/hubzilla-testresults.zip' on: repo: redmatrix/hubzilla tags: true condition: '(-n "$GH_TOKEN") && ("$CODECOV" == "1")' #after_deploy: #after_script: # configure notifications (email, IRC, campfire etc) #notifications: # irc: "irc.freenode.org#yourfavouriteroomfortravis" # a plugin/script to post to a hubzilla channel would be neat here