Create the API documentation with Doxygen and publish it through gitlab-ci as a Gitlab page at: https://hubzilla.frama.io/core This should only happen when master gets updated. Update Doxyfile configuration. Correct image usage. Replace RedMatrix with Hubzilla icon.
96 lines
3.3 KiB
YAML
96 lines
3.3 KiB
YAML
# 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
|