name: Build and test
|
on: [push, pull_request]
|
|
jobs:
|
ubuntu:
|
name: Ubuntu
|
runs-on: ubuntu-latest
|
steps:
|
- uses: actions/checkout@v3
|
|
- name: Install dependencies
|
run: |
|
curl -fsSL https://packages.redis.io/gpg | sudo gpg --dearmor -o /usr/share/keyrings/redis-archive-keyring.gpg
|
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
|
sudo apt-get update
|
sudo apt-get install -y redis-server valgrind libevent-dev
|
|
- name: Build using cmake
|
env:
|
EXTRA_CMAKE_OPTS: -DENABLE_EXAMPLES:BOOL=ON -DENABLE_SSL:BOOL=ON -DENABLE_SSL_TESTS:BOOL=ON -DENABLE_ASYNC_TESTS:BOOL=ON
|
CFLAGS: -Werror
|
CXXFLAGS: -Werror
|
run: mkdir build && cd build && cmake .. && make
|
|
- name: Build using makefile
|
run: USE_SSL=1 TEST_ASYNC=1 make
|
|
- name: Run tests
|
env:
|
SKIPS_AS_FAILS: 1
|
TEST_SSL: 1
|
run: $GITHUB_WORKSPACE/test.sh
|
|
# - name: Run tests under valgrind
|
# env:
|
# SKIPS_AS_FAILS: 1
|
# TEST_PREFIX: valgrind --error-exitcode=99 --track-origins=yes --leak-check=full
|
# run: $GITHUB_WORKSPACE/test.sh
|
|
centos8:
|
name: RockyLinux 8
|
runs-on: ubuntu-latest
|
container: rockylinux:8
|
steps:
|
- uses: actions/checkout@v3
|
|
- name: Install dependencies
|
run: |
|
dnf -y upgrade --refresh
|
dnf -y install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
|
dnf -y module install redis:remi-6.0
|
dnf -y group install "Development Tools"
|
dnf -y install openssl-devel cmake valgrind libevent-devel
|
|
- name: Build using cmake
|
env:
|
EXTRA_CMAKE_OPTS: -DENABLE_EXAMPLES:BOOL=ON -DENABLE_SSL:BOOL=ON -DENABLE_SSL_TESTS:BOOL=ON -DENABLE_ASYNC_TESTS:BOOL=ON
|
CFLAGS: -Werror
|
CXXFLAGS: -Werror
|
run: mkdir build && cd build && cmake .. && make
|
|
- name: Build using Makefile
|
run: USE_SSL=1 TEST_ASYNC=1 make
|
|
- name: Run tests
|
env:
|
SKIPS_AS_FAILS: 1
|
TEST_SSL: 1
|
run: $GITHUB_WORKSPACE/test.sh
|
|
- name: Run tests under valgrind
|
env:
|
SKIPS_AS_FAILS: 1
|
TEST_SSL: 1
|
TEST_PREFIX: valgrind --error-exitcode=99 --track-origins=yes --leak-check=full
|
run: $GITHUB_WORKSPACE/test.sh
|
|
freebsd:
|
runs-on: ubuntu-latest
|
name: FreeBSD
|
steps:
|
- uses: actions/checkout@v3
|
|
- name: Build in FreeBSD
|
uses: vmactions/freebsd-vm@v1.0.5
|
with:
|
prepare: pkg install -y gmake cmake
|
run: |
|
mkdir build && cd build && cmake .. && make && cd ..
|
gmake
|
|
macos:
|
name: macOS
|
runs-on: macos-latest
|
steps:
|
- uses: actions/checkout@v3
|
|
- name: Install dependencies
|
run: |
|
brew install openssl redis@8.0
|
brew link redis@8.0 --force
|
|
- name: Build hiredis
|
run: USE_SSL=1 make
|
|
- name: Run tests
|
env:
|
TEST_SSL: 1
|
run: $GITHUB_WORKSPACE/test.sh
|
|
windows:
|
name: Windows
|
runs-on: windows-latest
|
steps:
|
- uses: actions/checkout@v3
|
|
- name: Install dependencies
|
run: |
|
choco install -y ninja memurai-developer
|
|
- uses: ilammy/msvc-dev-cmd@v1
|
- name: Build hiredis
|
run: |
|
mkdir build && cd build
|
cmake .. -G Ninja -DCMAKE_BUILD_TYPE=Release -DENABLE_EXAMPLES=ON
|
ninja -v
|
|
- name: Run tests
|
run: |
|
./build/hiredis-test.exe
|
|
- name: Install Cygwin Action
|
uses: cygwin/cygwin-install-action@v2
|
with:
|
packages: make git gcc-core
|
|
- name: Build in cygwin
|
env:
|
HIREDIS_PATH: ${{ github.workspace }}
|
run: |
|
make clean && make
|
|
test-cmake-version:
|
name: Test build with CMake ${{ matrix.cmake-version }}
|
runs-on: ubuntu-latest
|
strategy:
|
matrix:
|
cmake-version: [
|
'3.7.0', # Minimum version
|
'3.22.0', # Ubuntu 22.04 LTS
|
'3.28.0', # Ubuntu 24.04 LTS
|
'4.0.0' # Latest version
|
]
|
steps:
|
- uses: actions/checkout@v4
|
- name: Setup CMake
|
uses: jwlawson/actions-setup-cmake@v2
|
with:
|
cmake-version: ${{ matrix.cmake-version }}
|
- name: Install hiredis dependencies
|
run: |
|
sudo apt-get install -y libssl-dev libevent-dev
|
- name: Build
|
run: |
|
mkdir build && cd build
|
cmake -DENABLE_SSL=ON -DENABLE_SSL_TESTS=ON -DENABLE_ASYNC_TESTS=ON -DENABLE_EXAMPLES=ON ..
|
make
|