name: PHP Tests on: push: branches: - master - release/* pull_request: branches: - master jobs: lint: name: Static analysis for php ${{ matrix.php }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: php: ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2'] os: ['ubuntu-latest'] steps: - name: Checkout code base uses: actions/checkout@v3 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} tools: phpcs extensions: ldap - name: Setup dependencies run: | composer require -n --no-progress overtrue/phplint git clone --depth 1 -b snapshot/nightly https://github.com/Icinga/icinga-php-library.git vendor/icinga-php-library git clone --depth 1 -b snapshot/nightly https://github.com/Icinga/icinga-php-thirdparty.git vendor/icinga-php-thirdparty git clone --depth 1 https://github.com/Icinga/icingaweb2-module-x509.git vendor/modules/x509-web git clone --depth 1 https://github.com/Icinga/icingadb-web.git vendor/modules/icingadb-web git clone --depth 1 https://github.com/Icinga/icingaweb2-module-pdfexport.git vendor/modules/pdfexport-web - name: PHP Lint if: ${{ ! cancelled() }} run: ./vendor/bin/phplint -n --exclude={^vendor/.*} --exclude=library/Icinga/Util/String.php ${{ matrix.phplint_options }} -- . - name: PHP CodeSniffer if: ${{ ! cancelled() }} run: phpcs - name: PHPStan if: ${{ ! cancelled() }} uses: php-actions/phpstan@v3 test: name: Unit tests with php ${{ matrix.php }} on ${{ matrix.os }} runs-on: ${{ matrix.os }} env: phpunit-version: 9.5 strategy: fail-fast: false matrix: php: ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2'] os: ['ubuntu-latest'] include: - php: '7.2' phpunit-version: 8.5 services: mysql: image: mariadb env: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: icinga_unittest MYSQL_USER: icinga_unittest MYSQL_PASSWORD: icinga_unittest options: >- --health-cmd "mariadb -s -uroot -proot -e'SHOW DATABASES;' 2> /dev/null | grep icinga_unittest > test" --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 3306/tcp pgsql: image: postgres env: POSTGRES_USER: icinga_unittest POSTGRES_PASSWORD: icinga_unittest POSTGRES_DB: icinga_unittest options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 ports: - 5432/tcp steps: - name: Checkout code base uses: actions/checkout@v3 - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} tools: phpunit:${{ matrix.phpunit-version || env.phpunit-version }} extensions: mysql, pgsql, ldap - name: Setup dependencies run: | composer require -n --no-progress mockery/mockery ipl/i18n:@dev ipl/web:@dev git clone --depth 1 --branch snapshot/nightly https://github.com/Icinga/icinga-php-thirdparty.git vendor/icinga-php-thirdparty - name: PHPUnit env: ICINGAWEB_TEST_MYSQL_PORT: ${{ job.services.mysql.ports['3306'] }} ICINGAWEB_TEST_PGSQL_PORT: ${{ job.services.pgsql.ports['5432'] }} ICINGAWEB_LIBDIR: vendor/ run: phpunit -c modules/test/phpunit.xml --verbose