name: Tests on: push: branches: - main - v2.** pull_request: concurrency: group: ${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: predis: name: PHP ${{ matrix.php }} (Redis ${{ matrix.redis }}) runs-on: ubuntu-latest strategy: fail-fast: false matrix: php: - '7.2' - '8.0' - '8.3' - '8.4' redis: - '4.0' - '6.2' - '7.2' - '7.4' - '8.0' steps: - name: Resolve container name run: | # Mapping of original redis versions to client test containers declare -A redis_clients_version_mapping=( ["8.0"]="8.0-M04-pre" ["7.4"]="7.4.2" ["7.2"]="7.2.7" ["6.2"]="6.2.17" ) if [[ -v redis_clients_version_mapping[${{ matrix.redis }}] ]]; then echo "REDIS_IMAGE_NAME=redislabs/client-libs-test:${redis_clients_version_mapping[${{ matrix.redis }}]}" >> $GITHUB_ENV echo "DOCKER_SERVICE=redis-clients" >> $GITHUB_ENV redis_major_version=$(echo "${{ matrix.redis }}" | grep -oP '^\d+') # Some configuration options available since Redis > 7 if (( redis_major_version < 7 )); then echo "REDIS_EXTRA_ARGS="--tls-auth-clients optional --save ''"" >> $GITHUB_ENV fi else echo "REDIS_IMAGE_NAME=redis:${{ matrix.redis }}" >> $GITHUB_ENV echo "DOCKER_SERVICE=redis-official" >> $GITHUB_ENV fi - name: Checkout repository uses: actions/checkout@v3 - name: Start Redis standalone image uses: hoverkraft-tech/compose-action@v2.0.1 with: compose-file: .github/docker-compose.yml services: ${{ env.DOCKER_SERVICE }} - name: Start Redis stack image uses: hoverkraft-tech/compose-action@v2.0.1 if: ${{ matrix.redis == '7.4' }} with: compose-file: .github/docker-compose.yml services: redis-stack - name: Start Redis cluster image uses: hoverkraft-tech/compose-action@v2.0.1 if: ${{ matrix.redis == '7.4' }} with: compose-file: .github/docker-compose.yml services: redis-cluster - name: Setup PHP uses: shivammathur/setup-php@v2 with: php-version: ${{ matrix.php }} extensions: relay coverage: ${{ (matrix.php == '8.1' && matrix.redis == '7.4') && 'xdebug' || 'none' }} - name: Install Composer dependencies uses: ramsey/composer-install@v2 with: dependency-versions: highest composer-options: ${{ matrix.php == '8.0' && '--ignore-platform-reqs' || '' }} - name: Run tests if: ${{ matrix.php != '8.1' || matrix.redis != '7.4' }} run: vendor/bin/phpunit - name: Run tests with coverage if: ${{ matrix.php == '8.1' && matrix.redis == '7.4' }} run: vendor/bin/phpunit --coverage-clover build/logs/clover-default.xml --coverage-filter ./src - name: Run tests using Relay if: ${{ matrix.php != '8.4' && matrix.redis >= '6.2' }} run: vendor/bin/phpunit -c phpunit.relay.xml - name: Run tests using Relay with coverage if: ${{ matrix.php == '8.1' && matrix.redis == '7.4' }} run: vendor/bin/phpunit -c phpunit.relay.xml --coverage-clover build/logs/clover-relay.xml --coverage-filter ./src - name: Run stack tests if: ${{ matrix.redis == '7.4' }} run: vendor/bin/phpunit --group realm-stack - name: Run stack tests using Relay if: ${{ matrix.redis == '7.4' }} run: vendor/bin/phpunit --group realm-stack -c phpunit.relay.xml - name: Run tests against cluster if: ${{ matrix.redis == '7.4' }} run: | vendor/bin/phpunit --group cluster - name: Run tests against cluster using Relay if: ${{ matrix.redis == '7.4' }} run: | vendor/bin/phpunit -c phpunit.relay.xml --group cluster - name: Send coverage to Coveralls env: COVERALLS_REPO_TOKEN: ${{ secrets.GITHUB_TOKEN }} if: ${{ env.COVERALLS_REPO_TOKEN && matrix.php == '8.1' && matrix.redis == '7.4' }} run: | wget "https://github.com/php-coveralls/php-coveralls/releases/download/v2.5.3/php-coveralls.phar" php ./php-coveralls.phar -v