|
9 | 9 | - '**.md' |
10 | 10 |
|
11 | 11 | jobs: |
12 | | - tests: |
| 12 | + tests-single-node: |
13 | 13 | runs-on: ubuntu-latest |
14 | | - |
15 | 14 | services: |
16 | 15 | memcached: |
17 | 16 | image: memcached:1.6-alpine |
|
29 | 28 | php: [ '8.2', '8.3', '8.4' ] |
30 | 29 | stability: [ prefer-stable ] |
31 | 30 |
|
32 | | - name: PHP ${{ matrix.php }} tests |
| 31 | + name: PHP ${{ matrix.php }} (Single-Node Redis) |
33 | 32 | steps: |
34 | 33 | - name: Checkout code |
35 | 34 | uses: actions/checkout@v4 |
|
51 | 50 | run: composer require predis/predis |
52 | 51 | - name: Execute tests |
53 | 52 | run: vendor/bin/phpunit |
| 53 | + |
| 54 | + tests-cluster: |
| 55 | + runs-on: ubuntu-latest |
| 56 | + services: |
| 57 | + memcached: |
| 58 | + image: memcached:1.6-alpine |
| 59 | + ports: |
| 60 | + - 11211:11211 |
| 61 | + |
| 62 | + strategy: |
| 63 | + fail-fast: true |
| 64 | + matrix: |
| 65 | + php: [ '8.2', '8.3', '8.4' ] |
| 66 | + stability: [ prefer-stable ] |
| 67 | + |
| 68 | + name: PHP ${{ matrix.php }} (Redis Cluster) |
| 69 | + steps: |
| 70 | + - name: Checkout code |
| 71 | + uses: actions/checkout@v4 |
| 72 | + |
| 73 | + - name: Install Redis Server for Cluster |
| 74 | + run: | |
| 75 | + sudo apt-get update |
| 76 | + sudo apt-get install -y redis-server |
| 77 | +
|
| 78 | + - name: Start 3-Node Redis Cluster |
| 79 | + run: | |
| 80 | + echo "Starting 3-node Redis cluster on ports 7000-7002..." |
| 81 | + BASE_PORT=7000 |
| 82 | + NODE_COUNT=3 |
| 83 | + node_addresses="" |
| 84 | + for i in $(seq 0 $((NODE_COUNT - 1))); do |
| 85 | + port=$((BASE_PORT + i)) |
| 86 | + mkdir -p ./redis-cluster/node-$port |
| 87 | + node_addresses+=" 127.0.0.1:$port" |
| 88 | + cat > ./redis-cluster/node-$port/redis.conf <<EOF |
| 89 | + port $port |
| 90 | + cluster-enabled yes |
| 91 | + cluster-config-file nodes.conf |
| 92 | + cluster-node-timeout 5000 |
| 93 | + appendonly no |
| 94 | + daemonize yes |
| 95 | + bind 127.0.0.1 |
| 96 | + logfile "$(pwd)/redis-cluster/node-$port/redis.log" |
| 97 | + dir "$(pwd)/redis-cluster/node-$port" |
| 98 | + EOF |
| 99 | + redis-server ./redis-cluster/node-$port/redis.conf |
| 100 | + done |
| 101 | + sleep 3 |
| 102 | + echo "yes" | redis-cli --cluster create $node_addresses --cluster-replicas 0 |
| 103 | + echo "Redis cluster is up and running." |
| 104 | +
|
| 105 | + - name: Setup PHP |
| 106 | + uses: shivammathur/setup-php@v2 |
| 107 | + with: |
| 108 | + php-version: ${{ matrix.php }} |
| 109 | + extensions: apcu, redis |
| 110 | + ini-values: apc.enable_cli=1 |
| 111 | + coverage: none |
| 112 | + env: |
| 113 | + REDIS_CONFIGURE_OPTS: --enable-redis --enable-redis-igbinary --enable-redis-msgpack --enable-redis-lzf --with-liblzf --enable-redis-zstd --with-libzstd --enable-redis-lz4 --with-liblz4 |
| 114 | + REDIS_LIBS: liblz4-dev, liblzf-dev, libzstd-dev |
| 115 | + |
| 116 | + - name: Install dependencies |
| 117 | + run: composer update --prefer-dist --no-interaction --no-progress |
| 118 | + - name: Install Predis |
| 119 | + run: composer require predis/predis |
| 120 | + |
| 121 | + - name: Execute cluster tests |
| 122 | + env: |
| 123 | + PCA_REDIS_0_NODES: '["127.0.0.1:7000","127.0.0.1:7001","127.0.0.1:7002"]' |
| 124 | + run: vendor/bin/phpunit |
0 commit comments