You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
4.3 KiB
YAML

name: Build and test (OS matrix)
# trigger the workflow on push or pull requests
on: [push, pull_request, workflow_dispatch]
jobs:
validation-linux:
strategy:
fail-fast: false # don't cancel other jobs in the matrix if one fails
matrix:
include:
- runner: ubuntu-20.04
container: ubuntu:18.04
os_name: ubuntu-18.04
- runner: ubuntu-20.04
container: ubuntu:20.04
os_name: ubuntu-20.04
- runner: ubuntu-20.04
container: ubuntu:22.04
os_name: ubuntu-22.04
- runner: ubuntu-20.04
container: ubuntu:23.04
os_name: ubuntu-23.04
- runner: ubuntu-20.04
container: redhat/ubi8:8.8
os_name: redhat-8.8
- runner: ubuntu-20.04
container: redhat/ubi9:9.2
os_name: redhat-9.2
runs-on: ${{ matrix.runner }}
services:
redis:
image: redis:7.0.12-alpine # Docker Hub image used as a sidecar
# run each job in the container specified (ignored for macOS runners that don't use containers)
container:
image: ${{ matrix.container }}
steps:
- uses: actions/checkout@v3
- name: Fetch package lists and install dependencies (Ubuntu)
if: contains(matrix.os_name, 'ubuntu-')
run: |
apt-get -y update
DEBIAN_FRONTEND=noninteractive apt-get -y --allow-unauthenticated --allow-downgrades --allow-remove-essential --allow-change-held-packages \
install make gcc libevent-dev libmsgpack-dev curl uuid nodejs python3 python3-pip
# (using `rm` + `ln` since using `alternatives` doesn't work on both UBI 8 and UBI 9)
- name: Install dependencies (Red Hat)
if: contains(matrix.os_name, 'redhat-')
run: |
yum install -y --allowerasing make cmake gcc gcc-c++ libevent-devel git curl uuid nodejs python3.11 python3.11-pip
rm -f /usr/bin/python3 /usr/bin/pip3
ln -s $(which python3.11) /usr/bin/python3
ln -s $(which pip3.11) /usr/bin/pip3
- name: Install msgpack-c (Red Hat)
if: contains(matrix.os_name, 'redhat-')
run: |
cd /tmp
curl -sLO https://github.com/msgpack/msgpack-c/releases/download/c-6.0.0/msgpack-c-6.0.0.tar.gz
tar -xzf msgpack-c-6.0.0.tar.gz
cd msgpack-c-6.0.0
cmake -DMSGPACK_BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64 .
make
make install
- name: Fix pip3 on Ubuntu 23.04
if: matrix.os_name == 'ubuntu-23.04'
run: rm -f /usr/lib/python$(python3 --version | cut -d ' ' -f 2 | cut -d '.' -f 1,2)/EXTERNALLY-MANAGED
- name: Update Python3 on Ubuntu 18.04
if: matrix.os_name == 'ubuntu-18.04'
run: |
DEBIAN_FRONTEND=noninteractive apt-get -y install python3.8
update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
- name: Build
run: make
- name: Run Webdis and test
run: |
./webdis .github/workflows/webdis-ci.json
sleep 2
./tests/basic.py
./tests/curl-tests.sh
pip3 --no-cache-dir install -r tests/requirements.txt
./tests/ws-tests.py
- name: Archive logs
uses: actions/upload-artifact@v3
with:
name: webdis-${{ matrix.os_name }}.log
path: webdis.log
validation-macos:
strategy:
fail-fast: false
matrix:
include:
- runner: macos-11
os_name: macos-11
- runner: macos-12
os_name: macos-12
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: |
brew install libevent msgpack-c curl node python@3.11 redis
brew link --overwrite python@3.11
pip3 install --upgrade pip
- name: Set up redis hostname
run: echo "127.0.0.1 redis" | sudo tee -a /etc/hosts
- name: Build
run: make
- name: Run Webdis and test
run: |
brew services start redis
./webdis .github/workflows/webdis-ci.json
sleep 2
./tests/basic.py
./tests/curl-tests.sh
pip3 --no-cache-dir install -r tests/requirements.txt
./tests/ws-tests.py
- name: Archive logs
uses: actions/upload-artifact@v3
with:
name: webdis-${{ matrix.os_name }}.log
path: webdis.log