cleaning #30
This file contains hidden or 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, pull_request ] | |
| jobs: | |
| test: | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: true | |
| matrix: | |
| php: [ 8.1, 8.2, 8.3, 8.4 ] | |
| redis-version: [ 5, 6, 7 ] | |
| name: P${{ matrix.php }} - Redis ${{ matrix.redis-version }} | |
| # Service container with PostgreSQL | |
| services: | |
| postgres: | |
| image: postgres | |
| env: | |
| POSTGRES_PASSWORD: root | |
| POSTGRES_USER: root | |
| POSTGRES_DB: test | |
| options: >- | |
| --health-cmd pg_isready | |
| --health-interval 10s | |
| --health-timeout 5s | |
| --health-retries 5 | |
| ports: | |
| - 5432:5432 | |
| env: | |
| # The hostname used to communicate with the Redis/Sentinel service containers | |
| REDIS_HOST: redis | |
| # The hostname for redis sentinel | |
| REDIS_SENTINEL_HOST: redis-sentinel | |
| # The default Redis port | |
| REDIS_PORT: 6379 | |
| # The default Redis Sentinel port | |
| REDIS_SENTINEL_PORT: 26379 | |
| # The default Redis Sentinel primary | |
| REDIS_SENTINEL_SERVICE: myprimary | |
| # MySQL | |
| DB_DATABASE: test | |
| DB_USER: root | |
| DB_PASSWORD: root | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Cache dependencies | |
| uses: actions/cache@v4 | |
| with: | |
| path: ~/.composer/cache/files | |
| key: dependencies-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }} | |
| - name: Login to Docker Hub | |
| uses: docker/login-action@v3 | |
| with: | |
| username: ${{ secrets.DOCKERHUB_USERNAME }} | |
| password: ${{ secrets.DOCKERHUB_TOKEN }} | |
| - name: Setup PHP | |
| uses: shivammathur/setup-php@v2 | |
| with: | |
| php-version: ${{ matrix.php }} | |
| extensions: redis, apcu | |
| ini-values: apc.enable_cli='On',apc.shm_size = 256M | |
| coverage: none | |
| - name: Install dependencies | |
| run: composer update --prefer-dist --no-interaction --no-suggest | |
| - name: Start Redis | |
| uses: supercharge/redis-github-action@1.1.0 | |
| with: | |
| redis-version: ${{ matrix.redis-version }} | |
| - name: Generate Redis Sentinel conf compatible with redis 5 assuming 127.0.0.1 (no resolve hostname) | |
| run: | | |
| REDIS_SENTINEL_IP=127.0.0.1 | |
| cat <<EOF > sentinel5.conf | |
| port ${{ env.REDIS_SENTINEL_PORT }} | |
| sentinel monitor ${{ env.REDIS_SENTINEL_SERVICE }} $REDIS_SENTINEL_IP ${{ env.REDIS_PORT }} 2 | |
| sentinel down-after-milliseconds ${{ env.REDIS_SENTINEL_SERVICE }} 10000 | |
| sentinel failover-timeout ${{ env.REDIS_SENTINEL_SERVICE }} 180000 | |
| sentinel parallel-syncs ${{ env.REDIS_SENTINEL_SERVICE }} 2 | |
| EOF | |
| - name: Start Redis Sentinel | |
| run: docker run -d --name ${{env.REDIS_SENTINEL_HOST}} -p 26379:26379 --link redis:redis -v $PWD/sentinel5.conf:/data/sentinel.conf redis:${{ matrix.redis-version }} redis-server sentinel.conf --sentinel | |
| - name: Execute tests (PDO with Sqlite) | |
| run: vendor/bin/phpunit | |
| - name: Start MySQL | |
| run: | | |
| sudo /etc/init.d/mysql start | |
| mysql -e "CREATE DATABASE IF NOT EXISTS $DB_DATABASE;" -u$DB_USER -p$DB_PASSWORD | |
| - name: Execute PDO tests with MySQL | |
| env: | |
| TEST_PDO_DSN: 'mysql:host=localhost;dbname=test' | |
| TEST_PDO_USERNAME: 'root' | |
| TEST_PDO_PASSWORD: 'root' | |
| run: vendor/bin/phpunit tests/Test/Prometheus/PDO | |
| - name: Execute PDO tests with PostgreSQL | |
| env: | |
| TEST_PDO_DSN: 'pgsql:host=localhost;dbname=test' | |
| TEST_PDO_USERNAME: 'root' | |
| TEST_PDO_PASSWORD: 'root' | |
| run: vendor/bin/phpunit tests/Test/Prometheus/PDO |