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']
78
+
77
79
steps :
78
80
- name : Checkout
79
81
uses : actions/checkout@v4
@@ -86,42 +88,88 @@ jobs:
86
88
extensions : json, igbinary, msgpack, :redis
87
89
coverage : none
88
90
tools : none
89
- - name : Install dependencies
91
+ - name : Install system dependencies
92
+ run : |
93
+ sudo apt-get update
94
+ sudo apt-get install valgrind libzstd-dev liblz4-dev
95
+ - name : Install Redis
96
+ env :
97
+ REDIS_PPA_URI : " packages.redis.io/deb"
98
+ REDIS_PPA_KEY : " packages.redis.io/gpg"
90
99
run : |
91
- curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
92
- echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/redis.list
100
+ echo "deb https://$REDIS_PPA_URI $(lsb_release -cs) main" | \
101
+ sudo tee /etc/apt/sources.list.d/redis.list
102
+ curl -fsSL "https://$REDIS_PPA_KEY" | \
103
+ sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/redis.gpg
93
104
sudo apt-get update
94
- sudo apt --fix-broken install
95
- sudo apt-get install redis valgrind libzstd-dev liblz4-dev
105
+ sudo apt-get install redis
106
+
107
+ - name : Install KeyDB
108
+ env :
109
+ KEYDB_PPA_URI : " download.keydb.dev/open-source-dist"
110
+ KEYDB_PPA_KEY : " download.keydb.dev/open-source-dist/keyring.gpg"
111
+ run : |
112
+ echo "deb https://$KEYDB_PPA_URI $(lsb_release -sc) main" | \
113
+ sudo tee /etc/apt/sources.list.d/keydb.list
114
+ sudo wget -O /etc/apt/trusted.gpg.d/keydb.gpg "https://$KEYDB_PPA_KEY"
115
+ sudo apt-get update
116
+ sudo apt-get install keydb
96
117
- name : Build phpredis
97
118
run : |
98
119
phpize
99
- ./configure --enable-redis-lzf --enable-redis-zstd --enable-redis-igbinary --enable-redis-msgpack --enable-redis-lz4 --with-liblz4
120
+ ./configure \
121
+ --enable-redis-lzf \
122
+ --enable-redis-zstd \
123
+ --enable-redis-igbinary \
124
+ --enable-redis-msgpack \
125
+ --enable-redis-lz4 \
126
+ --with-liblz4
100
127
sudo make -j"$(nproc)" install
128
+
101
129
echo 'extension = redis.so' | sudo tee -a "$(php --ini | grep 'Scan for additional .ini files' | awk '{print $7}')"/90-redis.ini
102
130
- name : Start redis
103
131
run : |
104
132
redis-cli SHUTDOWN NOSAVE
105
133
for PORT in $(seq 6379 6382) $(seq 32767 32769); do
106
- redis-server --port "$PORT" --daemonize yes --aclfile tests/users.acl --acl-pubsub-default allchannels
134
+ ${{ matrix.server }} \
135
+ --port "$PORT" \
136
+ --daemonize yes \
137
+ --aclfile tests/users.acl \
138
+ --acl-pubsub-default allchannels
107
139
done
108
- redis-server --port 0 --unixsocket /tmp/redis.sock --daemonize yes --aclfile tests/users.acl --acl-pubsub-default allchannels
140
+ ${{ matrix.server }} \
141
+ --port 0 \
142
+ --unixsocket /tmp/redis.sock \
143
+ --daemonize yes \
144
+ --aclfile tests/users.acl \
145
+ --acl-pubsub-default allchannels
109
146
- name : Start redis cluster
110
147
run : |
111
148
mkdir -p tests/nodes
112
149
echo -n > tests/nodes/nodemap
113
150
for PORT in $(seq 7000 7005); do
114
- redis-server --port "$PORT" --cluster-enabled yes --cluster-config-file "$PORT".conf --daemonize yes --aclfile tests/users.acl --acl-pubsub-default allchannels
151
+ ${{ matrix.server }} \
152
+ --port "$PORT" \
153
+ --cluster-enabled yes \
154
+ --cluster-config-file "$PORT".conf \
155
+ --daemonize yes \
156
+ --aclfile tests/users.acl \
157
+ --acl-pubsub-default allchannels
115
158
echo 127.0.0.1:"$PORT" >> tests/nodes/nodemap
116
159
done
117
- echo yes | redis-cli --cluster create $(seq -f 127.0.0.1:%g 7000 7005) --cluster-replicas 1 --user phpredis -a phpredis
160
+ echo yes | redis-cli --cluster create $(seq -f 127.0.0.1:%g 7000 7005) \
161
+ --cluster-replicas 1 --user phpredis -a phpredis
118
162
- name : Start redis sentinel
119
163
run : |
120
164
wget raw.githubusercontent.com/redis/redis/7.0/sentinel.conf
121
165
for PORT in $(seq 26379 26380); do
122
166
cp sentinel.conf "$PORT.conf"
123
167
sed -i '/^sentinel/Id' "$PORT.conf"
124
- redis-server "$PORT.conf" --port "$PORT" --daemonize yes --sentinel monitor mymaster 127.0.0.1 6379 1 --sentinel auth-pass mymaster phpredis
168
+ ${{ matrix.server }} "$PORT.conf" \
169
+ --port "$PORT" \
170
+ --daemonize yes \
171
+ --sentinel monitor mymaster 127.0.0.1 6379 1 \
172
+ --sentinel auth-pass mymaster phpredis
125
173
done
126
174
- name : Run tests
127
175
run : |
0 commit comments