mirror of
https://framagit.org/hubzilla/core.git
synced 2026-06-21 00:52:33 -04:00
As the Symphony\Yaml stuff disappeared with behat, we need another way to load read the yaml files with database fixtures for the integration tests. As the php yaml extension is not distributed with PHP by default, this creates it as another dev dependency!
133 lines
4.3 KiB
YAML
133 lines
4.3 KiB
YAML
stages:
|
|
- test
|
|
- deploy
|
|
|
|
|
|
# Select what we should cache
|
|
cache:
|
|
paths:
|
|
- vendor/
|
|
- .cache/
|
|
|
|
|
|
# global variables for all jobs, if no job specific variables
|
|
variables:
|
|
# Tell composer to use the project workspace .cache folder
|
|
COMPOSER_CACHE_DIR: "$CI_PROJECT_DIR/.cache/composer"
|
|
# Ignore a Composer warning
|
|
COMPOSER_ALLOW_SUPERUSER: 1
|
|
# Configure MySQL/MariaDB service (https://hub.docker.com/_/mysql/, https://hub.docker.com/_/mariadb/)
|
|
MYSQL_DATABASE: hello_world_test
|
|
MYSQL_ROOT_PASSWORD: mysql
|
|
# Configure PostgreSQL service (https://hub.docker.com/_/postgres/)
|
|
POSTGRES_DB: ci-db
|
|
POSTGRES_USER: ci-user
|
|
POSTGRES_PASSWORD: ci-pass
|
|
|
|
|
|
before_script:
|
|
# Install & enable Xdebug for code coverage reports
|
|
- pecl install xdebug
|
|
- apt-get update
|
|
- apt-get install -yqq libjpeg-dev libpng-dev libpq-dev libyaml-dev libzip-dev mariadb-client postgresql-client unzip zip
|
|
- docker-php-ext-enable xdebug
|
|
- docker-php-ext-install gd bcmath pdo_mysql pdo_pgsql yaml zip
|
|
|
|
# Install composer
|
|
- curl -sS https://getcomposer.org/installer | php
|
|
# Install dev libraries from composer
|
|
- php ./composer.phar install --no-progress
|
|
# php.ini settings
|
|
- echo 'xdebug.mode=coverage' >> /usr/local/etc/php/php.ini
|
|
|
|
# hidden job definition with template for MySQL/MariaDB
|
|
.job_template_mysql: &job_definition_mysql
|
|
stage: test
|
|
variables:
|
|
HZ_TEST_DB_HOST: mysql
|
|
HZ_TEST_DB_TYPE: mysql
|
|
HZ_TEST_DB_USER: root
|
|
HZ_TEST_DB_PASS: $MYSQL_ROOT_PASSWORD
|
|
HZ_TEST_DB_DATABASE: $MYSQL_DATABASE
|
|
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"
|
|
- touch dbfail.out
|
|
- vendor/bin/phpunit --configuration tests/phpunit.xml --verbose --stop-on-error --coverage-text --colors=never --log-junit tests/results/junit.xml
|
|
coverage: '/^\s*Lines:\s*\d+.\d+\%/'
|
|
|
|
|
|
# hidden job definition with template for PostgreSQL
|
|
.job_template_postgres: &job_definition_postgres
|
|
stage: test
|
|
variables:
|
|
HZ_TEST_DB_HOST: postgres
|
|
HZ_TEST_DB_TYPE: postgres
|
|
HZ_TEST_DB_USER: $POSTGRES_USER
|
|
HZ_TEST_DB_PASS: $POSTGRES_PASSWORD
|
|
HZ_TEST_DB_DATABASE: $POSTGRES_DB
|
|
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
|
|
- touch dbfail.out
|
|
- vendor/bin/phpunit --configuration tests/phpunit.xml --verbose --stop-on-error --coverage-text --colors=never --log-junit tests/results/junit.xml
|
|
coverage: '/^\s*Lines:\s*\d+.\d+\%/'
|
|
|
|
# hidden job definition with artifacts config template
|
|
.artifacts_template: &artifacts_template
|
|
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/
|
|
|
|
|
|
# PHP8.0 with MySQL 5.7
|
|
php8.1_mysql5.7:
|
|
<<: *job_definition_mysql
|
|
<<: *artifacts_template
|
|
image: php:8.1
|
|
services:
|
|
- mysql:5.7
|
|
|
|
|
|
# PHP8.1 with PostgreSQL 12
|
|
php8.1_postgres12:
|
|
<<: *job_definition_postgres
|
|
<<: *artifacts_template
|
|
image: php:8.1
|
|
services:
|
|
- postgres:12-alpine
|
|
|
|
|
|
# Generate Doxygen API Documentation and deploy it as GitLab pages
|
|
pages:
|
|
stage: deploy
|
|
cache: {}
|
|
image: php:8-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
|