.travis.yml 5.44 KB
Newer Older
1
#
2
# Travis-CI configuration file for Hubzilla
3 4 5 6
#
## configure things
#

7 8 9
# see http://about.travis-ci.org/docs/user/languages/php/ for more hints
language: php

10 11
# use newer 'trusty' based distro, old one is 'precise'
dist: trusty
12 13 14 15 16 17 18 19
# use docker based containers
sudo: false

# Git branches whitelist to build on Travis CI
branches:
  only:
  - master
  - dev
20 21
  # whitelist our tags for release deployments e.g. 2.2
  - /^\d+\.\d+(\.\d+)?(-\S*)?$/
22

23 24 25 26 27
# Install additional software
addons:
  # Install dependencies for generating API documentation with doxygen
  apt:
    packages:
28 29
      - doxygen
      - doxygen-latex
30 31
      - graphviz
      - ttf-liberation
32

33
# enable and start databases on a per job basis
34 35 36 37
#services:
#  - mariadb
#  - postgresql

38
# any PHP version we want to test against, current stable phpunit requires PHP >= 7.0
39 40
php:
  - '7.0'
41
  - '7.1'
42
  - '7.2'
43
  # HHVM does not fulfil PHPUnit platform requirements as being compatible with PHP7 yet
44
  #- 'hhvm'
45

46 47 48 49 50 51 52
# 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
53 54
    # Code Coverage is slow, no need to have it in every build
    - PHPUCOV: "--no-coverage"
55 56
  # use matrix only for PHP and MySQL, all other combinations added through includes
  matrix:
57 58
    # trusty default MySQL 5.6
    - DB=mysql MYSQL_VERSION=5.6
59 60

# Matrix configuration details
61
matrix:
62 63 64
  fast_finish: true
  # Additional check combinations
  include:
65 66 67
    # PHP7.2, mariadb 10.2
    - php: '7.2'
      env: DB=mariadb MARIADB_VERSION=10.2 CODECOV=1
68 69
      # use mariadb instead of MySQL
      addons:
70 71 72
        mariadb: '10.2'
    # PHP7.2, PostgreSQL 9.6
    - php: '7.2'
73
      env: DB=pgsql POSTGRESQL_VERSION=9.6 PHPUNITFILE=phpunit-pgsql.xml
74
      # Use newer postgres than 9.2 default
75
      addons:
76 77 78
        postgresql: '9.6'
      services:
        - postgresql
79 80 81 82 83 84 85 86
    # 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'
87 88 89 90
      env: DB=mysql MYSQL_VERSION=5.5
      dist: precise
      services:
        - mysql
91
    # MySQL 5.7 with Docker container
92
    - php: '7.2'
93 94 95 96
      env: DB=mysql MYSQL_VERSION=5.7
      sudo: required
      services:
        - docker
97
   # Excludes from default matrix combinations
98 99 100 101
#  exclude:
#    - php: hhvm
#      env: DB=pgsql  # PDO driver for pgsql is unsupported by HHVM (3rd party install for support)

102 103 104 105
# cache composer downloads between runs
cache:
  directories:
    - $HOME/.composer/cache
106
    #- $HOME/doxygen/doxygen-$DOXY_VER/bin
107 108


109

110 111 112 113 114 115
#
## execute things
#

before_install:
  - travis_retry composer self-update
116 117
  # 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
118 119
  # 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
120 121

# Install composer dev libs
122
install:
123
  - travis_retry composer install --optimize-autoloader --no-progress
124 125 126

# execute any number of scripts before the test run, custom env's are available as variables
before_script:
127 128
  # Use code coverage config for phpunit
  - if [[ ! -z $CODECOV ]]; then export PHPUCOV=""; fi
129 130 131 132 133 134
  # 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
135

136
# omitting "script:" will default to phpunit
137 138
script:
  - ./vendor/bin/phpunit $PHPUCOV -c tests/$PHPUNITFILE
139 140

after_success:
141 142
  - cat tests/results/testdox.txt
  # Generate API documentation and prepare for deployment
143
  - ./tests/travis/gen_apidocs.sh
144 145
after_failure:
  - cat tests/results/testdox.txt
146

147
# Deploying release and API documentation to GitHub
148 149
before_deploy:
  - if [[ "$CODECOV" == "1" ]]; then zip -9 -r -q tests/hubzilla-testresults.zip tests/results; fi
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
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")'
168 169 170 171 172 173 174 175 176
  # 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")'
177 178 179 180 181
#after_deploy:

#after_script:


182 183

# configure notifications (email, IRC, campfire etc)
184
#notifications:
185
#  irc: "irc.freenode.org#yourfavouriteroomfortravis"
186
# a plugin/script to post to a hubzilla channel would be neat here