Skip to content

Commit e91c3eb

Browse files
authored
Use up-to-date releases of Redis for CI workflow (#2855)
This PR is to update the _Redis_ versions running in the CI, there are two different test setups according to environments, one on _Ubuntu_ and the other on _Windows_; - _Ubuntu_ job is now using docker image with latest _Redis_ release, it was using a relatively up-to-date version (**7.4-rc1 -> 7.4.2**) - _Windows_ job was using the binaries of an old version of _Redis_ which was build to run on _Windows_ env, but it is quite old(**Redis 3.0.503**) and lack of a set of features/changes that _StackExchange.Redis_ already capable of when running with up-to-date _Redis_ versions. So this is replaced with the **Redis 7.4.2** which is the latest GA Release(as of now) in package repository. Setup for _Windows_ essentially leverages [wsl setup](https://github.com/Vampire/setup-wsl) on windows and install+run the version of _Redis_ from its own package repository. The rest is similar to existing approach, using the same config files etc..
1 parent bb23b57 commit e91c3eb

File tree

2 files changed

+84
-36
lines changed

2 files changed

+84
-36
lines changed

.github/workflows/CI.yml

Lines changed: 83 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,12 @@ jobs:
1818
TERM: xterm # Enable color output in GitHub Actions
1919
steps:
2020
- name: Checkout code
21-
uses: actions/checkout@v1
21+
uses: actions/checkout@v4
22+
with:
23+
fetch-depth: 0 # Fetch the full history
24+
- name: Start Redis Services (docker-compose)
25+
working-directory: ./tests/RedisConfigs
26+
run: docker compose -f docker-compose.yml up -d --wait
2227
- name: Install .NET SDK
2328
uses: actions/setup-dotnet@v3
2429
with:
@@ -27,9 +32,6 @@ jobs:
2732
8.0.x
2833
- name: .NET Build
2934
run: dotnet build Build.csproj -c Release /p:CI=true
30-
- name: Start Redis Services (docker-compose)
31-
working-directory: ./tests/RedisConfigs
32-
run: docker compose -f docker-compose.yml up -d --wait
3335
- name: StackExchange.Redis.Tests
3436
run: dotnet test tests/StackExchange.Redis.Tests/StackExchange.Redis.Tests.csproj -c Release --logger trx --logger GitHubActions --results-directory ./test-results/ /p:CI=true
3537
- uses: dorny/test-reporter@v1
@@ -52,39 +54,85 @@ jobs:
5254
DOCKER_BUILDKIT: 1
5355
steps:
5456
- name: Checkout code
55-
uses: actions/checkout@v1
56-
# - name: Install .NET SDK
57-
# uses: actions/setup-dotnet@v3
58-
# with:
59-
# dotnet-version: |
60-
# 6.0.x
61-
# 8.0.x
57+
uses: actions/checkout@v4
58+
with:
59+
fetch-depth: 0 # Fetch the full history
60+
- uses: Vampire/setup-wsl@v2
61+
with:
62+
distribution: Ubuntu-22.04
63+
- name: Install Redis
64+
shell: wsl-bash {0}
65+
working-directory: ./tests/RedisConfigs
66+
run: |
67+
apt-get update
68+
apt-get install curl gpg lsb-release libgomp1 jq -y
69+
curl -fsSL https://packages.redis.io/gpg | gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
70+
chmod 644 /usr/share/keyrings/redis-archive-keyring.gpg
71+
echo "deb [signed-by=/usr/share/keyrings/redis-archive-keyring.gpg] https://packages.redis.io/deb $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/redis.list
72+
apt-get update
73+
apt-get install -y redis
74+
mkdir redis
75+
- name: Run redis-server
76+
shell: wsl-bash {0}
77+
working-directory: ./tests/RedisConfigs/redis
78+
run: |
79+
pwd
80+
ls .
81+
# Run each server instance in order
82+
redis-server ../Basic/primary-6379.conf &
83+
redis-server ../Basic/replica-6380.conf &
84+
redis-server ../Basic/secure-6381.conf &
85+
redis-server ../Failover/primary-6382.conf &
86+
redis-server ../Failover/replica-6383.conf &
87+
redis-server ../Cluster/cluster-7000.conf --dir ../Cluster &
88+
redis-server ../Cluster/cluster-7001.conf --dir ../Cluster &
89+
redis-server ../Cluster/cluster-7002.conf --dir ../Cluster &
90+
redis-server ../Cluster/cluster-7003.conf --dir ../Cluster &
91+
redis-server ../Cluster/cluster-7004.conf --dir ../Cluster &
92+
redis-server ../Cluster/cluster-7005.conf --dir ../Cluster &
93+
redis-server ../Sentinel/redis-7010.conf &
94+
redis-server ../Sentinel/redis-7011.conf &
95+
redis-server ../Sentinel/sentinel-26379.conf --sentinel &
96+
redis-server ../Sentinel/sentinel-26380.conf --sentinel &
97+
redis-server ../Sentinel/sentinel-26381.conf --sentinel &
98+
# Wait for server instances to get ready
99+
sleep 5
100+
echo "Checking redis-server version with port 6379"
101+
redis-cli -p 6379 INFO SERVER | grep redis_version || echo "Failed to get version for port 6379"
102+
echo "Checking redis-server version with port 6380"
103+
redis-cli -p 6380 INFO SERVER | grep redis_version || echo "Failed to get version for port 6380"
104+
echo "Checking redis-server version with port 6381"
105+
redis-cli -p 6381 INFO SERVER | grep redis_version || echo "Failed to get version for port 6381"
106+
echo "Checking redis-server version with port 6382"
107+
redis-cli -p 6382 INFO SERVER | grep redis_version || echo "Failed to get version for port 6382"
108+
echo "Checking redis-server version with port 6383"
109+
redis-cli -p 6383 INFO SERVER | grep redis_version || echo "Failed to get version for port 6383"
110+
echo "Checking redis-server version with port 7000"
111+
redis-cli -p 7000 INFO SERVER | grep redis_version || echo "Failed to get version for port 7000"
112+
echo "Checking redis-server version with port 7001"
113+
redis-cli -p 7001 INFO SERVER | grep redis_version || echo "Failed to get version for port 7001"
114+
echo "Checking redis-server version with port 7002"
115+
redis-cli -p 7002 INFO SERVER | grep redis_version || echo "Failed to get version for port 7002"
116+
echo "Checking redis-server version with port 7003"
117+
redis-cli -p 7003 INFO SERVER | grep redis_version || echo "Failed to get version for port 7003"
118+
echo "Checking redis-server version with port 7004"
119+
redis-cli -p 7004 INFO SERVER | grep redis_version || echo "Failed to get version for port 7004"
120+
echo "Checking redis-server version with port 7005"
121+
redis-cli -p 7005 INFO SERVER | grep redis_version || echo "Failed to get version for port 7005"
122+
echo "Checking redis-server version with port 7010"
123+
redis-cli -p 7010 INFO SERVER | grep redis_version || echo "Failed to get version for port 7010"
124+
echo "Checking redis-server version with port 7011"
125+
redis-cli -p 7011 INFO SERVER | grep redis_version || echo "Failed to get version for port 7011"
126+
echo "Checking redis-server version with port 26379"
127+
redis-cli -p 26379 INFO SERVER | grep redis_version || echo "Failed to get version for port 26379"
128+
echo "Checking redis-server version with port 26380"
129+
redis-cli -p 26380 INFO SERVER | grep redis_version || echo "Failed to get version for port 26380"
130+
echo "Checking redis-server version with port 26381"
131+
redis-cli -p 26381 INFO SERVER | grep redis_version || echo "Failed to get version for port 26381"
132+
continue-on-error: true
133+
62134
- name: .NET Build
63135
run: dotnet build Build.csproj -c Release /p:CI=true
64-
# We can't do this combination - see https://github.com/actions/runner/issues/904
65-
# - name: Start Redis Services (docker-compose)
66-
# working-directory: .\tests\RedisConfigs
67-
# run: docker compose -f docker-compose.yml up -d --wait
68-
- name: Start Redis Services (v3.0.503)
69-
working-directory: .\tests\RedisConfigs\3.0.503
70-
run: |
71-
.\redis-server.exe --service-install --service-name "redis-6379" "..\Basic\primary-6379-3.0.conf"
72-
.\redis-server.exe --service-install --service-name "redis-6380" "..\Basic\replica-6380.conf"
73-
.\redis-server.exe --service-install --service-name "redis-6381" "..\Basic\secure-6381.conf"
74-
.\redis-server.exe --service-install --service-name "redis-6382" "..\Failover\primary-6382.conf"
75-
.\redis-server.exe --service-install --service-name "redis-6383" "..\Failover\replica-6383.conf"
76-
.\redis-server.exe --service-install --service-name "redis-7000" "..\Cluster\cluster-7000.conf" --dir "..\Cluster"
77-
.\redis-server.exe --service-install --service-name "redis-7001" "..\Cluster\cluster-7001.conf" --dir "..\Cluster"
78-
.\redis-server.exe --service-install --service-name "redis-7002" "..\Cluster\cluster-7002.conf" --dir "..\Cluster"
79-
.\redis-server.exe --service-install --service-name "redis-7003" "..\Cluster\cluster-7003.conf" --dir "..\Cluster"
80-
.\redis-server.exe --service-install --service-name "redis-7004" "..\Cluster\cluster-7004.conf" --dir "..\Cluster"
81-
.\redis-server.exe --service-install --service-name "redis-7005" "..\Cluster\cluster-7005.conf" --dir "..\Cluster"
82-
.\redis-server.exe --service-install --service-name "redis-7010" "..\Sentinel\redis-7010.conf"
83-
.\redis-server.exe --service-install --service-name "redis-7011" "..\Sentinel\redis-7011.conf"
84-
.\redis-server.exe --service-install --service-name "redis-26379" "..\Sentinel\sentinel-26379.conf" --sentinel
85-
.\redis-server.exe --service-install --service-name "redis-26380" "..\Sentinel\sentinel-26380.conf" --sentinel
86-
.\redis-server.exe --service-install --service-name "redis-26381" "..\Sentinel\sentinel-26381.conf" --sentinel
87-
Start-Service redis-*
88136
- name: StackExchange.Redis.Tests
89137
run: dotnet test tests/StackExchange.Redis.Tests/StackExchange.Redis.Tests.csproj -c Release --logger trx --logger GitHubActions --results-directory ./test-results/ /p:CI=true
90138
- uses: dorny/test-reporter@v1

tests/RedisConfigs/.docker/Redis/Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM redis:7.4-rc1
1+
FROM redis:7.4.2
22

33
COPY --from=configs ./Basic /data/Basic/
44
COPY --from=configs ./Failover /data/Failover/

0 commit comments

Comments
 (0)