-
Notifications
You must be signed in to change notification settings - Fork 303
141 lines (118 loc) · 4.35 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
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