Add 24.04 to the build checks #532
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: | |
build-notls: | |
env: | |
# 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 | |
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-18.04, ubuntu-20.04, ubuntu-22.04, ubuntu-24.04, ubuntu-latest] | |
name: Build ${{ matrix.platform }} | |
env: | |
# 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 | |
runs-on: ${{ matrix.platform }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install dependencies | |
run: | | |
sudo apt-get -qq update | |
sudo apt-get install autoconf automake pkg-config libevent-dev libpcre3-dev libssl-dev | |
# Install lcov only on ubuntu-latest | |
- name: Install lcov | |
if: matrix.platform == 'ubuntu-latest' | |
run: | | |
sudo apt-get install -y lcov | |
lcov --version # Confirm version | |
- 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 | |
if: matrix.platform == 'ubuntu-latest' | |
run: pip install -r ./tests/test_requirements.txt | |
- name: Install Redis | |
if: matrix.platform == 'ubuntu-latest' | |
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 | |
if: matrix.platform == 'ubuntu-latest' | |
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 | |
if: matrix.platform == 'ubuntu-latest' | |
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 | |
if: matrix.platform == 'ubuntu-latest' | |
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 | |
env: | |
# 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 | |
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 }} | |
env: | |
# 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 | |
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 }} | |
env: | |
# 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 | |
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 |