# Select image from https://hub.docker.com/_/php/ image: php:7.1 stages: - test - deploy # Select what we should cache cache: paths: - vendor/ variables: # Configure mysql service (https://hub.docker.com/_/mysql/) MYSQL_DATABASE: hello_world_test MYSQL_ROOT_PASSWORD: mysql before_script: # prevent error installing buggy postgresql-client package - mkdir -p /usr/share/man/man1 /usr/share/man/man7 - apt-get update -yqq - apt-get install -yqq --no-install-recommends git mysql-client postgresql-client libmcrypt-dev libpq-dev libcurl4-gnutls-dev libicu-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libaspell-dev libpcre3-dev libtidy-dev # Install PHP extensions - docker-php-ext-install mbstring mcrypt pdo_mysql pdo_pgsql curl json intl gd xml zip bz2 opcache # Install & enable Xdebug for code coverage reports - pecl install xdebug - docker-php-ext-enable xdebug # Install and run Composer - curl -sS https://getcomposer.org/installer | php # Install dev libraries from composer - php composer.phar install --no-progress # Configure PHP values, needed for phpunit code coverage HTML generation - echo "memory_limit = 256M" > /usr/local/etc/php/conf.d/hubzilla.ini # We test PHP7 with MySQL test:php:mysql: stage: test services: - mysql:5.7 script: - echo "USE $MYSQL_DATABASE; $(cat ./install/schema_mysql.sql)" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE" - echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE" - echo "USE $MYSQL_DATABASE; SHOW TABLES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE" - vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-text # test PHP7 with PostgreSQL test:php:postgres: stage: test services: - postgres:latest variables: POSTGRES_DB: ci-db POSTGRES_USER: ci-user POSTGRES_PASSWORD: ci-pass script: - export PGPASSWORD=$POSTGRES_PASSWORD - psql --version - psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "SELECT VERSION();" # Import hubzilla's DB schema - psql -h "postgres" -U "$POSTGRES_USER" -v ON_ERROR_STOP=1 --quiet "$POSTGRES_DB" < ./install/schema_postgres.sql # Show databases and relations/tables of hubzilla's database #- psql -h "postgres" -U "$POSTGRES_USER" -l #- psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "\dt;" # Run the actual tests - vendor/bin/phpunit --configuration tests/phpunit-pgsql.xml --testdox artifacts: expire_in: 1 week # Gitlab should show the results, but has problems parsing PHPUnit's junit file. reports: junit: tests/results/junit.xml # Archive test results (coverage, testdox, junit) name: "$CI_COMMIT_REF_SLUG-$CI_JOB_NAME" paths: - tests/results/ # Generate Doxygen API Documentation and deploy it at GitLab pages pages: stage: deploy cache: {} image: php:7-cli-alpine before_script: - apk update - apk add doxygen ttf-freefont graphviz script: - doxygen util/Doxyfile - mv doc/html/ public/ - echo "API documentation should be accessible at https://hubzilla.frama.io/core/ soon" artifacts: paths: - public only: # Only generate it on main repo's master branch - master@hubzilla/core