Skip to content

cleaning

cleaning #30

Workflow file for this run

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