mirror of
https://framagit.org/hubzilla/core.git
synced 2026-06-21 00:52:33 -04:00
Reuse job definition for mysql job, and alias the mariadb service to mysql so that the job will find it.
147 lines
4.9 KiB
YAML
147 lines
4.9 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/)
|
|
DB_HOST: mysql
|
|
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
|
|
- apt-get update
|
|
- apt-get install -yqq libicu-dev libjpeg-dev libpng-dev libpq-dev libyaml-dev libzip-dev mariadb-client postgresql-client unzip zip
|
|
- pecl install xdebug yaml
|
|
- docker-php-ext-enable xdebug yaml
|
|
- docker-php-ext-install gd bcmath intl pdo_mysql pdo_pgsql 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: $DB_HOST
|
|
HZ_TEST_DB_TYPE: mysql
|
|
HZ_TEST_DB_USER: root
|
|
HZ_TEST_DB_PASS: $MYSQL_ROOT_PASSWORD
|
|
HZ_TEST_DB_DATABASE: $MYSQL_DATABASE
|
|
script:
|
|
# Import hubzilla's DB schema
|
|
- echo "USE $MYSQL_DATABASE; $(cat ./install/schema_mysql.sql)" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host="$DB_HOST" "$MYSQL_DATABASE"
|
|
# Show databases and relations/tables of hubzilla's database
|
|
- echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host="$DB_HOST" "$MYSQL_DATABASE"
|
|
- echo "USE $MYSQL_DATABASE; SHOW TABLES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host="$DB_HOST" "$MYSQL_DATABASE"
|
|
# 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 || exit_code=$?
|
|
- if [ $exit_code -ne 0 ]; then echo "Test barfed!"; cat dbfail.out; exit $exit_code; fi
|
|
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 || exit_code=$?
|
|
- if [ $exit_code -ne 0 ]; then echo "Test barfed!"; cat dbfail.out; exit $exit_code; fi
|
|
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.1 with MySQL 8.0
|
|
php8.1_mysql8.0.22:
|
|
image: php:8.1
|
|
services:
|
|
- mysql:8.0
|
|
<<: *job_definition_mysql
|
|
<<: *artifacts_template
|
|
|
|
# PHP8.1 with MariaDB 10.6
|
|
php8.1_mariadb10.6:
|
|
image: php:8.1
|
|
services:
|
|
- name: mariadb:10.6
|
|
alias: mysql
|
|
<<: *job_definition_mysql
|
|
<<: *artifacts_template
|
|
|
|
# PHP8.1 with PostgreSQL 12
|
|
php8.1_postgres12:
|
|
image: php:8.1
|
|
services:
|
|
- postgres:12-alpine
|
|
<<: *job_definition_postgres
|
|
<<: *artifacts_template
|
|
|
|
|
|
# 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
|