Testing ubuntu and debian builds on CI. all v1/v2 actions to v4 migra… #559
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: [push, pull_request] | |
jobs: | |
smoketest-build-distros: | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
env: | |
ARCH: amd64 | |
# required by ubuntu:bionic | |
# https://github.blog/changelog/2024-03-07-github-actions-all-actions-will-run-on-node20-instead-of-node16-by-default/ | |
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true | |
DEBIAN_FRONTEND: noninteractive | |
strategy: | |
matrix: | |
image: ${{ fromJSON(vars.SMOKE_TEST_IMAGES) }} | |
container: ${{ matrix.image }} | |
name: Build ${{ matrix.image }} | |
steps: | |
- name: Checkout Code for ubuntu:bionic | |
if: matrix.image == 'ubuntu:bionic' | |
uses: actions/checkout@v3 | |
- name: Checkout Code for other versions | |
if: matrix.image != 'ubuntu:bionic' | |
uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
apt-get -qq update -y | |
apt-get install -y \ | |
build-essential autoconf automake libpcre3-dev libevent-dev \ | |
pkg-config zlib1g-dev libssl-dev libboost-all-dev cmake flex | |
- name: Build | |
run: autoreconf -ivf && ./configure && make -j | |
build-notls: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
sudo apt-get -qq update | |
sudo apt-get install lcov autoconf automake pkg-config libevent-dev libpcre3-dev | |
- name: Build | |
run: autoreconf -ivf && ./configure --disable-tls && make -j | |
build-ubuntu: | |
strategy: | |
matrix: | |
platform: [ubuntu-latest, ubuntu-20.04] | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
sudo apt-get -qq update | |
sudo apt-get install lcov autoconf automake pkg-config libevent-dev libpcre3-dev libssl-dev | |
- name: Build | |
run: autoreconf -ivf && ./configure --enable-code-coverage && make -j | |
- name: Setup Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: '3.10' | |
architecture: x64 | |
- name: Install Python dependencies | |
run: pip install -r ./tests/test_requirements.txt | |
- name: Install Redis | |
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 -qq update | |
sudo apt-get install redis | |
sudo service redis-server stop | |
- name: Increase connection limit | |
run: | | |
sudo sysctl -w net.ipv4.tcp_fin_timeout=10 | |
sudo sysctl -w net.ipv4.tcp_tw_reuse=1 | |
ulimit -n 40960 | |
- name: Generate TLS test certificates | |
if: matrix.platform == 'ubuntu-latest' | |
run: | | |
./tests/gen-test-certs.sh | |
- name: Test OSS TCP | |
timeout-minutes: 10 | |
run: | | |
./tests/run_tests.sh | |
- name: Test OSS TCP TLS | |
if: matrix.platform == 'ubuntu-latest' | |
timeout-minutes: 10 | |
run: | | |
TLS=1 ./tests/run_tests.sh | |
- name: Test OSS TCP TLS v1.2 | |
if: matrix.platform == 'ubuntu-latest' | |
timeout-minutes: 10 | |
run: | | |
TLS_PROTOCOLS='TLSv1.2' VERBOSE=1 TLS=1 ./tests/run_tests.sh | |
- name: Test OSS TCP TLS v1.3 | |
if: matrix.platform == 'ubuntu-latest' | |
timeout-minutes: 10 | |
run: | | |
TLS_PROTOCOLS='TLSv1.3' VERBOSE=1 TLS=1 ./tests/run_tests.sh | |
- name: Test OSS-CLUSTER TCP | |
timeout-minutes: 10 | |
run: | | |
OSS_STANDALONE=0 OSS_CLUSTER=1 VERBOSE=1 \ | |
./tests/run_tests.sh | |
- name: Test OSS-CLUSTER TCP TLS | |
timeout-minutes: 10 | |
if: matrix.platform == 'ubuntu-latest' | |
run: | | |
OSS_STANDALONE=0 OSS_CLUSTER=1 TLS=1 VERBOSE=1 \ | |
./tests/run_tests.sh | |
- name: Capture code coverage | |
timeout-minutes: 6 | |
if: matrix.platform == 'ubuntu-latest' | |
run: | | |
make code-coverage-capture | |
bash <(curl -s https://codecov.io/bash) -f memtier_benchmark-*-coverage.info || echo "Codecov did not collect coverage reports" | |
build-macos: | |
strategy: | |
matrix: | |
openssl: ["3.0"] | |
runs-on: macos-latest | |
continue-on-error: true | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: brew install autoconf automake libtool libevent openssl@${{ matrix.openssl }} | |
- name: Build | |
run: autoreconf -ivf && PKG_CONFIG_PATH=`brew --prefix openssl@${{ matrix.openssl }}`/lib/pkgconfig ./configure && make | |
# According to https://github.com/actions/runner-images/blob/macos-14-arm64/20241119.509/images/macos/macos-14-arm64-Readme.md | |
# [macOS] OpenSSL 1.1 will be removed and OpenSSL 3 will be the default for all macOS images from November 4, 2024 | |
# so use macos-12 which does not have the deprecation notice | |
build-macos-openssl-1-1: | |
strategy: | |
matrix: | |
platform: [macos-12] | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: brew install autoconf automake libtool libevent [email protected] | |
- name: Build | |
run: autoreconf -ivf && PKG_CONFIG_PATH=`brew --prefix [email protected]`/lib/pkgconfig ./configure && make | |
build-macos-openssl-1-0-2: | |
strategy: | |
matrix: | |
platform: [macos-12] | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: brew install autoconf automake libtool libevent pkg-config | |
- name: Install openssl v1.0.2 | |
run: brew install rbenv/tap/[email protected] | |
- name: Build | |
run: autoreconf -ivf && PKG_CONFIG_PATH=`brew --prefix [email protected]`/lib/pkgconfig ./configure && make |