# SPDX-FileCopyrightText: 2010 - 2024 the Friendica project # # SPDX-License-Identifier: CC0-1.0 matrix: include: - PHP_MAJOR_VERSION: 7.4 PHP_VERSION: 7.4.33 - PHP_MAJOR_VERSION: 8.0 PHP_VERSION: 8.0.30 - PHP_MAJOR_VERSION: 8.1 PHP_VERSION: 8.1.31 - PHP_MAJOR_VERSION: 8.2 PHP_VERSION: 8.2.28 - PHP_MAJOR_VERSION: 8.3 PHP_VERSION: 8.3.17 - PHP_MAJOR_VERSION: 8.4 PHP_VERSION: 8.4.5 # This forces PHP Unit executions at the "opensocial" labeled location (because of much more power...) labels: location: opensocial when: branch: exclude: [ stable ] event: [ pull_request, push ] skip_clone: true steps: clone: image: alpine/git commands: - git config --global user.email "no-reply@friendi.ca" - git config --global user.name "Friendica" - git config --global --add safe.directory $CI_WORKSPACE - git clone $CI_REPO_CLONE_URL . - git checkout $CI_COMMIT_BRANCH - git fetch origin $CI_COMMIT_REF - git merge $CI_COMMIT_SHA php-lint: image: php:${PHP_MAJOR_VERSION} commands: - find . -name \*.php -not -path './vendor/*' -not -path './view/asset/*' -print0 | xargs -0 -n1 php -l restore_cache: image: meltwater/drone-cache:dev settings: backend: "filesystem" restore: true cache_key: "{{ .Repo.Name }}_php${PHP_MAJOR_VERSION}_{{ arch }}_{{ os }}" archive_format: "gzip" mount: - '.composer' volumes: - /tmp/drone-cache:/tmp/cache composer_install: image: friendicaci/php${PHP_MAJOR_VERSION}:php${PHP_VERSION} commands: - git clone -b develop --single-branch https://git.friendi.ca/friendica/friendica-addons.git addon - export COMPOSER_HOME=.composer - ./bin/composer.phar validate - ./bin/composer.phar install --prefer-dist volumes: - /etc/hosts:/etc/hosts rebuild_cache: image: meltwater/drone-cache:dev settings: backend: "filesystem" rebuild: true cache_key: "{{ .Repo.Name }}_php${PHP_MAJOR_VERSION}_{{ arch }}_{{ os }}" archive_format: "gzip" mount: - '.composer' volumes: - /tmp/drone-cache:/tmp/cache phpstan: image: friendicaci/php${PHP_MAJOR_VERSION}:php${PHP_VERSION} when: matrix: PHP_MAJOR_VERSION: 8.3 commands: - bin/composer.phar run phpstan; phpstan-addons: image: friendicaci/php${PHP_MAJOR_VERSION}:php${PHP_VERSION} when: matrix: PHP_MAJOR_VERSION: 8.3 commands: - bin/composer.phar run phpstan-addons; test: image: friendicaci/php${PHP_MAJOR_VERSION}:php${PHP_VERSION} environment: MYSQL_HOST: "mariadb" MYSQL_PORT: "3306" MYSQL_DATABASE: "test" MYSQL_PASSWORD: "test" MYSQL_USER: "test" REDIS_HOST: "redis" MEMCACHED_HOST: "memcached" MEMCACHE_HOST: "memcached" commands: - cp config/local-sample.config.php config/local.config.php - if ! bin/wait-for-connection $MYSQL_HOST $MYSQL_PORT 300; then echo "[ERROR] Waited 300 seconds, no response" >&2; exit 1; fi - mysql -h$MYSQL_HOST -P$MYSQL_PORT -p$MYSQL_PASSWORD -u$MYSQL_USER $MYSQL_DATABASE < database.sql - if [ "${PHP_MAJOR_VERSION}" = "8.2" -a "${CI_REPO}" = "friendica/friendica" ]; then phpenmod xdebug; export XDEBUG_MODE=coverage; phpunit --configuration tests/phpunit.xml -d memory_limit=-1 --coverage-clover clover.xml; else phpunit --configuration tests/phpunit.xml -d memory_limit=-1; fi codecov: image: friendicaci/codecov when: matrix: PHP_MAJOR_VERSION: 8.2 PHP_VERSION: 8.2.28 repo: - friendica/friendica commands: - codecov -R '.' -Z -f 'clover.xml' environment: CODECOV_TOKEN: from_secret: codecov-token services: mariadb: image: mariadb:latest environment: MYSQL_ALLOW_EMPTY_PASSWORD: "true" MYSQL_DATABASE: "test" MYSQL_PASSWORD: "test" MYSQL_USER: "test" memcached: image: memcached redis: image: redis