name: "Continuous Integration" on: - push - pull_request permissions: contents: read jobs: tests: name: "CI (PHP ${{ matrix.php-version }}, ${{ matrix.dependencies }} deps)" runs-on: "${{ matrix.operating-system }}" strategy: fail-fast: false matrix: php-version: - "7.2" - "7.3" - "7.4" - "8.0" - "8.1" - "8.2" - "8.3" dependencies: [highest] composer-options: [""] operating-system: - "ubuntu-latest" include: - php-version: "7.2" dependencies: lowest operating-system: ubuntu-latest - php-version: "8.4" dependencies: highest operating-system: ubuntu-latest composer-options: "--ignore-platform-req=php+" steps: - uses: "actions/checkout@v4" - name: Run CouchDB timeout-minutes: 3 continue-on-error: true uses: "cobot/couchdb-action@master" with: couchdb version: '2.3.1' - name: Run MongoDB uses: supercharge/mongodb-github-action@1.10.0 with: mongodb-version: 5.0 - uses: "shivammathur/setup-php@v2" with: coverage: "none" php-version: "${{ matrix.php-version }}" extensions: mongodb, redis, amqp tools: "composer:v2" ini-values: "memory_limit=-1" - name: Add require for mongodb/mongodb to make tests runnable run: 'composer require mongodb/mongodb --dev --no-update' - name: "Change dependencies" run: | composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^7 composer config --no-plugins allow-plugins.ocramius/package-versions true - uses: "ramsey/composer-install@v2" with: dependency-versions: "${{ matrix.dependencies }}" composer-options: "${{ matrix.composer-options }}" - name: "Run tests" run: "composer exec phpunit -- --exclude-group Elasticsearch,Elastica --verbose" - name: "Run tests with psr/log 3" if: "contains(matrix.dependencies, 'highest') && matrix.php-version >= '8.0'" run: | composer remove --no-update --dev graylog2/gelf-php ruflin/elastica elasticsearch/elasticsearch rollbar/rollbar composer require --no-update psr/log:^3 composer update ${{ matrix.composer-options }} composer exec phpunit -- --exclude-group Elasticsearch,Elastica --verbose tests-es-7: name: "CI with ES ${{ matrix.es-version }} on PHP ${{ matrix.php-version }}" needs: "tests" runs-on: "${{ matrix.operating-system }}" strategy: fail-fast: false matrix: operating-system: - "ubuntu-latest" php-version: - "7.2" - "7.3" - "7.4" - "8.0" - "8.1" dependencies: - "highest" - "lowest" es-version: - "7.0.0" - "7.17.0" exclude: # php 7.3 is required - php-version: "7.2" es-version: "7.17.0" # tests failing due an error in deprecated guzzlehttp/ringphp - php-version: "7.3" es-version: "7.0.0" - php-version: "7.4" es-version: "7.0.0" steps: - uses: "actions/checkout@v4" # required for elasticsearch - name: Configure sysctl limits run: | sudo swapoff -a sudo sysctl -w vm.swappiness=1 sudo sysctl -w fs.file-max=262144 sudo sysctl -w vm.max_map_count=262144 - name: Run Elasticsearch timeout-minutes: 3 uses: elastic/elastic-github-actions/elasticsearch@master with: stack-version: "${{ matrix.es-version }}" - uses: "shivammathur/setup-php@v2" with: coverage: "none" php-version: "${{ matrix.php-version }}" extensions: mongodb, redis, amqp tools: "composer:v2" ini-values: "memory_limit=-1" - name: "Change dependencies" run: "composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^${{ matrix.es-version }}" - name: "Allow composer plugin to run" if: "matrix.php-version == '7.4' && matrix.dependencies == 'lowest'" run: "composer config allow-plugins.ocramius/package-versions true" - uses: "ramsey/composer-install@v2" with: dependency-versions: "${{ matrix.dependencies }}" - name: "Run tests" run: "composer exec phpunit -- --group Elasticsearch,Elastica --verbose" - name: "Run tests with psr/log 3" if: "contains(matrix.dependencies, 'highest') && matrix.php-version >= '8.0'" run: | composer remove --no-update --dev graylog2/gelf-php ruflin/elastica elasticsearch/elasticsearch rollbar/rollbar composer require --no-update --no-interaction --dev ruflin/elastica:^7 elasticsearch/elasticsearch:^7 composer require --no-update psr/log:^3 composer update composer exec phpunit -- --group Elasticsearch,Elastica --verbose tests-es-8: name: "CI with ES ${{ matrix.es-version }} on PHP ${{ matrix.php-version }}" needs: "tests" runs-on: "${{ matrix.operating-system }}" strategy: fail-fast: false matrix: operating-system: - "ubuntu-latest" php-version: # ES 8 requires PHP 7.4+ - "7.4" - "8.0" - "8.1" dependencies: - "highest" - "lowest" es-version: - "8.0.0" - "8.2.0" steps: - uses: "actions/checkout@v4" # required for elasticsearch - name: Configure sysctl limits run: | sudo swapoff -a sudo sysctl -w vm.swappiness=1 sudo sysctl -w fs.file-max=262144 sudo sysctl -w vm.max_map_count=262144 - name: Run Elasticsearch timeout-minutes: 3 uses: elastic/elastic-github-actions/elasticsearch@master with: stack-version: "${{ matrix.es-version }}" - uses: "shivammathur/setup-php@v2" with: coverage: "none" php-version: "${{ matrix.php-version }}" extensions: mongodb, redis, amqp tools: "composer:v2" ini-values: "memory_limit=-1" - name: "Change dependencies" run: | composer remove --no-update --dev graylog2/gelf-php ruflin/elastica elasticsearch/elasticsearch rollbar/rollbar composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^8 - name: "Allow composer plugin to run" if: "matrix.php-version == '7.4' && matrix.dependencies == 'lowest'" run: "composer config allow-plugins.ocramius/package-versions true" - uses: "ramsey/composer-install@v2" with: dependency-versions: "${{ matrix.dependencies }}" - name: "Run tests" run: "composer exec phpunit -- --group Elasticsearch,Elastica --verbose" - name: "Run tests with psr/log 3" if: "contains(matrix.dependencies, 'highest') && matrix.php-version >= '8.0'" run: | composer require --no-update psr/log:^3 composer update -W composer exec phpunit -- --group Elasticsearch,Elastica --verbose