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 centos7: name: CentOS 7 runs-on: ubuntu-latest container: centos:7 steps: - uses: actions/checkout@v3 - name: Install dependencies run: | yum -y install http://rpms.remirepo.net/enterprise/remi-release-7.rpm yum -y --enablerepo=remi install redis yum -y install gcc gcc-c++ make openssl openssl-devel cmake3 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 && cmake3 .. && 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 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@7.2 brew link redis@7.2 --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