aboutsummaryrefslogtreecommitdiffstats
path: root/.gitlab-ci.yml
diff options
context:
space:
mode:
Diffstat (limited to '.gitlab-ci.yml')
-rw-r--r--.gitlab-ci.yml73
1 files changed, 66 insertions, 7 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 0b8e0430f..bf03c1763 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,6 +1,10 @@
# Select image from https://hub.docker.com/_/php/
image: php:7.1
+stages:
+ - test
+ - deploy
+
# Select what we should cache
cache:
paths:
@@ -11,13 +15,11 @@ variables:
MYSQL_DATABASE: hello_world_test
MYSQL_ROOT_PASSWORD: mysql
-
-services:
-- mysql:5.7
-
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 git mysql-server mysql-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 libsqlite3-dev libaspell-dev libsnmp-dev libpcre3-dev libtidy-dev
+- 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
@@ -25,12 +27,69 @@ before_script:
- docker-php-ext-enable xdebug
# Install and run Composer
- curl -sS https://getcomposer.org/installer | php
-- php composer.phar install
+# 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, but we allow it to fail
+
+# 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