74
74
fail-fast : false
75
75
matrix :
76
76
php : ['7.2', '7.3', '7.4', '8.0', '8.1', '8.2', '8.3']
77
- server : ['redis-server ', 'keydb-server ']
77
+ server : ['redis', 'keydb', 'valkey ']
78
78
79
79
steps :
80
80
- name : Checkout
91
91
- name : Install system dependencies
92
92
run : |
93
93
sudo apt-get update
94
- sudo apt-get install valgrind libzstd-dev liblz4-dev
94
+ sudo apt-get install valgrind libzstd-dev liblz4-dev libssl-dev
95
+
95
96
- name : Install Redis
97
+ if : matrix.server == 'redis'
96
98
env :
97
99
REDIS_PPA_URI : " packages.redis.io/deb"
98
100
REDIS_PPA_KEY : " packages.redis.io/gpg"
@@ -105,6 +107,7 @@ jobs:
105
107
sudo apt-get install redis
106
108
107
109
- name : Install KeyDB
110
+ if : matrix.server == 'keydb'
108
111
env :
109
112
KEYDB_PPA_URI : " download.keydb.dev/open-source-dist"
110
113
KEYDB_PPA_KEY : " download.keydb.dev/open-source-dist/keyring.gpg"
@@ -114,6 +117,13 @@ jobs:
114
117
sudo wget -O /etc/apt/trusted.gpg.d/keydb.gpg "https://$KEYDB_PPA_KEY"
115
118
sudo apt-get update
116
119
sudo apt-get install keydb
120
+
121
+ - name : Install ValKey
122
+ if : matrix.server == 'valkey'
123
+ run : |
124
+ git clone https://github.com/valkey-io/valkey.git
125
+ cd valkey && BUILD_TLS=yes sudo make install
126
+
117
127
- name : Build phpredis
118
128
run : |
119
129
phpize
@@ -127,28 +137,32 @@ jobs:
127
137
sudo make -j"$(nproc)" install
128
138
129
139
echo 'extension = redis.so' | sudo tee -a "$(php --ini | grep 'Scan for additional .ini files' | awk '{print $7}')"/90-redis.ini
130
- - name : Start redis
140
+
141
+ - name : Attempt to shutdown default server
142
+ run : ${{ matrix.server }}-cli SHUTDOWN NOSAVE || true
143
+
144
+ - name : Start ${{ matrix.server }}-server
131
145
run : |
132
- redis-cli SHUTDOWN NOSAVE
133
146
for PORT in $(seq 6379 6382) $(seq 32767 32769); do
134
- ${{ matrix.server }} \
147
+ ${{ matrix.server }}-server \
135
148
--port "$PORT" \
136
149
--daemonize yes \
137
150
--aclfile tests/users.acl \
138
151
--acl-pubsub-default allchannels
139
152
done
140
- ${{ matrix.server }} \
153
+ ${{ matrix.server }}-server \
141
154
--port 0 \
142
155
--unixsocket /tmp/redis.sock \
143
156
--daemonize yes \
144
157
--aclfile tests/users.acl \
145
158
--acl-pubsub-default allchannels
146
- - name : Start redis cluster
159
+
160
+ - name : Start ${{ matrix.server }} cluster
147
161
run : |
148
162
mkdir -p tests/nodes
149
163
echo -n > tests/nodes/nodemap
150
164
for PORT in $(seq 7000 7005); do
151
- ${{ matrix.server }} \
165
+ ${{ matrix.server }}-server \
152
166
--port "$PORT" \
153
167
--cluster-enabled yes \
154
168
--cluster-config-file "$PORT".conf \
@@ -157,21 +171,25 @@ jobs:
157
171
--acl-pubsub-default allchannels
158
172
echo 127.0.0.1:"$PORT" >> tests/nodes/nodemap
159
173
done
160
- echo yes | redis -cli --cluster create $(seq -f 127.0.0.1:%g 7000 7005) \
174
+ echo yes | ${{ matrix.server }} -cli --cluster create $(seq -f 127.0.0.1:%g 7000 7005) \
161
175
--cluster-replicas 1 --user phpredis -a phpredis
162
- - name : Start redis sentinel
176
+
177
+ - name : Start ${{ matrix.server }} sentinel
178
+ continue-on-error : ${{ matrix.server == 'valkey' }}
163
179
run : |
164
180
wget raw.githubusercontent.com/redis/redis/7.0/sentinel.conf
165
181
for PORT in $(seq 26379 26380); do
166
182
cp sentinel.conf "$PORT.conf"
167
183
sed -i '/^sentinel/Id' "$PORT.conf"
168
- ${{ matrix.server }} "$PORT.conf" \
184
+ ${{ matrix.server }}-server "$PORT.conf" \
169
185
--port "$PORT" \
170
186
--daemonize yes \
171
187
--sentinel monitor mymaster 127.0.0.1 6379 1 \
172
188
--sentinel auth-pass mymaster phpredis
173
189
done
190
+
174
191
- name : Run tests
192
+ continue-on-error : ${{ matrix.server == 'valkey' }}
175
193
run : |
176
194
php tests/TestRedis.php --class Redis --user phpredis --auth phpredis
177
195
php tests/TestRedis.php --class RedisArray --user phpredis --auth phpredis
@@ -182,10 +200,14 @@ jobs:
182
200
- name : Run tests using valgrind
183
201
continue-on-error : true
184
202
run : |
185
- valgrind --suppressions=tests/vg.supp --error-exitcode=1 php tests/TestRedis.php --class Redis --user phpredis --auth phpredis
186
- valgrind --suppressions=tests/vg.supp --error-exitcode=1 php tests/TestRedis.php --class RedisArray --user phpredis --auth phpredis
187
- valgrind --suppressions=tests/vg.supp --error-exitcode=1 php tests/TestRedis.php --class RedisCluster --user phpredis --auth phpredis
188
- valgrind --suppressions=tests/vg.supp --error-exitcode=1 php tests/TestRedis.php --class RedisSentinel --auth phpredis
203
+ valgrind --suppressions=tests/vg.supp --error-exitcode=1 \
204
+ php tests/TestRedis.php --class Redis --user phpredis --auth phpredis
205
+ valgrind --suppressions=tests/vg.supp --error-exitcode=1 \
206
+ php tests/TestRedis.php --class RedisArray --user phpredis --auth phpredis
207
+ valgrind --suppressions=tests/vg.supp --error-exitcode=1 \
208
+ php tests/TestRedis.php --class RedisCluster --user phpredis --auth phpredis
209
+ valgrind --suppressions=tests/vg.supp --error-exitcode=1 \
210
+ php tests/TestRedis.php --class RedisSentinel --auth phpredis
189
211
env :
190
212
TEST_PHP_ARGS : -e
191
213
USE_ZEND_ALLOC : 0
0 commit comments