Fix: PHP 8.4 - Implicitly nullable parameter declarations deprecated #313
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Tests | |
on: | |
push: | |
branches: | |
- master | |
pull_request_target: | |
types: [opened, synchronize, reopened] | |
jobs: | |
test-all: | |
name: Test PHP ${{ matrix.php-version }} using broker [${{ matrix.mqtt-broker }}] | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
php-version: ['8.0', '8.1', '8.2', '8.3'] | |
mqtt-broker: ['mosquitto-1.6', 'mosquitto-2.0', 'hivemq', 'emqx', 'rabbitmq'] | |
include: | |
- php-version: '8.3' | |
mqtt-broker: 'mosquitto-2.0' | |
run-sonarqube-analysis: true | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
- name: Setup PHP ${{ matrix.php-version }} | |
uses: shivammathur/setup-php@v2 | |
with: | |
php-version: ${{ matrix.php-version }} | |
tools: phpunit:9.5.0 | |
coverage: pcov | |
- name: Setup problem matchers for PHP | |
run: echo "::add-matcher::${{ runner.tool_cache }}/php.json" | |
- name: Setup problem matchers for PHPUnit | |
run: echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json" | |
- name: Get Composer Cache Directory | |
id: composer-cache | |
run: | | |
echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT | |
- name: Cache Composer dependencies | |
uses: actions/cache@v4 | |
with: | |
path: ${{ steps.composer-cache.outputs.dir }} | |
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} | |
restore-keys: ${{ runner.os }}-composer- | |
- name: Install Composer dependencies | |
run: composer install --prefer-dist | |
- name: Generate certificates for tests | |
run: | | |
sh create-certificates.sh | |
chmod u+rx,g+rx ${{ github.workspace }}/.ci/tls | |
chmod a+r ${{ github.workspace }}/.ci/tls/* | |
- name: Start Mosquitto 1.6 message broker | |
if: matrix.mqtt-broker == 'mosquitto-1.6' | |
uses: Namoshek/mosquitto-github-action@v1 | |
with: | |
version: '1.6' | |
ports: '1883:1883 1884:1884 8883:8883 8884:8884' | |
certificates: ${{ github.workspace }}/.ci/tls | |
config: ${{ github.workspace }}/.ci/mosquitto.conf | |
password-file: ${{ github.workspace}}/.ci/mosquitto.passwd | |
- name: Start Mosquitto 2.0 message broker | |
if: matrix.mqtt-broker == 'mosquitto-2.0' | |
uses: Namoshek/mosquitto-github-action@v1 | |
with: | |
version: '2.0' | |
ports: '1883:1883 1884:1884 8883:8883 8884:8884' | |
certificates: ${{ github.workspace }}/.ci/tls | |
config: ${{ github.workspace }}/.ci/mosquitto.conf | |
password-file: ${{ github.workspace}}/.ci/mosquitto.passwd | |
- name: Start HiveMQ message broker | |
if: matrix.mqtt-broker == 'hivemq' | |
uses: Namoshek/hivemq4-github-action@v1 | |
with: | |
version: '4.8.5' | |
ports: '1883:1883 8883:8883 8884:8884' | |
certificates: ${{ github.workspace }}/.ci/tls | |
config: ${{ github.workspace }}/.ci/hivemq.xml | |
- name: Start EMQ X message broker | |
if: matrix.mqtt-broker == 'emqx' | |
uses: Namoshek/[email protected] | |
with: | |
version: '4.4.3' | |
ports: '1883:1883' | |
config: ${{ github.workspace }}/.ci/emqx.conf | |
- name: Start RabbitMQ message broker | |
if: matrix.mqtt-broker == 'rabbitmq' | |
uses: namoshek/[email protected] | |
with: | |
version: '3.8.9' | |
ports: '1883:1883' | |
config: ${{ github.workspace }}/.ci/rabbitmq.conf | |
plugins: 'rabbitmq_mqtt' | |
- name: Wait a bit until MQTT broker has started | |
run: sleep 45 | |
- name: Run phpunit tests | |
run: composer test | |
env: | |
MQTT_BROKER_HOST: 'localhost' | |
MQTT_BROKER_PORT: 1883 | |
MQTT_BROKER_PORT_WITH_AUTHENTICATION: ${{ (matrix.mqtt-broker == 'mosquitto-1.6' || matrix.mqtt-broker == 'mosquitto-2.0') && 1884 || 1883 }} | |
MQTT_BROKER_TLS_PORT: 8883 | |
MQTT_BROKER_TLS_WITH_CLIENT_CERT_PORT: 8884 | |
MQTT_BROKER_USERNAME: ${{ (matrix.mqtt-broker == 'mosquitto-1.6' || matrix.mqtt-broker == 'mosquitto-2.0') && 'ci-test-user' || '' }} | |
MQTT_BROKER_PASSWORD: ${{ (matrix.mqtt-broker == 'mosquitto-1.6' || matrix.mqtt-broker == 'mosquitto-2.0') && secrets.CI_MOSQUITTO_CI_TEST_USER_PASSWORD || '' }} | |
SKIP_TLS_TESTS: ${{ matrix.mqtt-broker == 'emqx' || matrix.mqtt-broker == 'rabbitmq' }} | |
- name: Dump Docker logs on failure | |
if: failure() | |
uses: jwalton/gh-docker-logs@v2 | |
- name: Prepare paths for SonarQube analysis | |
if: matrix.run-sonarqube-analysis | |
run: | | |
sed -i "s|$GITHUB_WORKSPACE|/github/workspace|g" phpunit.coverage-clover.xml | |
sed -i "s|$GITHUB_WORKSPACE|/github/workspace|g" phpunit.report-junit.xml | |
- name: Run SonarQube analysis | |
uses: sonarsource/[email protected] | |
if: matrix.run-sonarqube-analysis | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }} |