Enable key placeholder to be combined with other data within the same… #793
Workflow file for this run
This file contains hidden or 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 | |
| # CI testing includes: | |
| # - Debian versions: 11 (bullseye), 12 (bookworm), 13 (trixie), sid (unstable) | |
| # - Various smoke test images (configurable via repository variables) | |
| # - TLS and no-TLS builds | |
| # - Code coverage and static analysis | |
| 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 libevent-dev \ | |
| pkg-config zlib1g-dev libssl-dev libboost-all-dev cmake flex | |
| - name: Build | |
| run: autoreconf -ivf && ./configure && make -j | |
| - name: Verify version, libevent, openssl | |
| run: | | |
| ./memtier_benchmark --version | |
| ldd ./memtier_benchmark | grep libevent | |
| ldd ./memtier_benchmark | grep ssl | |
| test-debian-versions: | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| env: | |
| DEBIAN_FRONTEND: noninteractive | |
| strategy: | |
| matrix: | |
| debian_version: | |
| - "debian:bullseye" # Debian 11 (oldstable) | |
| - "debian:bookworm" # Debian 12 (stable) | |
| - "debian:trixie" # Debian 13 (testing) | |
| - "debian:sid" # Debian unstable | |
| container: ${{ matrix.debian_version }} | |
| name: Test ${{ matrix.debian_version }} | |
| steps: | |
| - name: Install git and basic tools | |
| run: | | |
| apt-get update -qq | |
| apt-get install -y git ca-certificates | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Install build dependencies | |
| run: | | |
| apt-get update -qq | |
| apt-get install -y \ | |
| build-essential \ | |
| autoconf \ | |
| automake \ | |
| pkg-config \ | |
| libevent-dev \ | |
| zlib1g-dev \ | |
| libssl-dev | |
| - name: Build | |
| run: autoreconf -ivf && ./configure && make -j | |
| - name: Verify version, libevent, openssl | |
| run: | | |
| ./memtier_benchmark --version | |
| ldd ./memtier_benchmark | grep libevent | |
| ldd ./memtier_benchmark | grep ssl | |
| 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 | |
| - name: Build without TLS | |
| run: autoreconf -ivf && ./configure --disable-tls && make -j | |
| - name: Verify version, libevent | |
| run: | | |
| ./memtier_benchmark --version | |
| ldd ./memtier_benchmark | grep libevent | |
| build-ubuntu-latest: | |
| 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 | |
| - name: Build without TLS | |
| run: autoreconf -ivf && ./configure --disable-tls && make -j | |
| - name: Verify version, libevent, openssl | |
| run: | | |
| ./memtier_benchmark --version | |
| ldd ./memtier_benchmark | grep libevent | |
| build-ubuntu: | |
| strategy: | |
| matrix: | |
| platform: [ubuntu-22.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 libssl-dev | |
| - name: Build | |
| # for coverage reports we need to use Ubuntu 22.04 or lower | |
| # (given Ubuntu 24.04 uses lcov >= 2.0 which is not support on autoconf still) | |
| 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 | |
| - name: Verify version, libevent, openssl | |
| run: | | |
| ./memtier_benchmark --version | |
| otool -L ./memtier_benchmark | grep libevent | |
| otool -L ./memtier_benchmark | grep ssl | |
| # macos-13 has been retired as of December 2025, so use macos-14 | |
| # macos-14 details: https://github.com/actions/runner-images/blob/main/images/macos/macos-14-Readme.md | |
| build-macos-openssl-1-1: | |
| runs-on: macos-14 | |
| 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 | |
| - name: Verify version, libevent, openssl | |
| run: | | |
| ./memtier_benchmark --version | |
| otool -L ./memtier_benchmark | grep libevent | |
| otool -L ./memtier_benchmark | grep ssl | |
| build-macos-openssl-1-0-2: | |
| runs-on: macos-14 | |
| 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 | |
| - name: Verify version, libevent, openssl | |
| run: | | |
| ./memtier_benchmark --version | |
| otool -L ./memtier_benchmark | grep libevent | |
| otool -L ./memtier_benchmark | grep ssl |