ci: don't build with documentation on Windows/MSVC #1557
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: C/C++ CI | |
env: | |
LLHTTP_VERSION: "v9.2.1" | |
RESTINIO_VERSION: "0.7.6" | |
EXPECTED_LITE_URL: "https://raw.githubusercontent.com/martinmoene/expected-lite/master/include/nonstd/expected.hpp" | |
UBUNTU_FULL_DEPS: "libncurses5-dev libreadline-dev nettle-dev libasio-dev libgnutls28-dev libuv1-dev python3-pip python3-dev python3-setuptools libcppunit-dev libjsoncpp-dev autotools-dev autoconf libfmt-dev libmsgpack-dev libargon2-dev" | |
UBUNTU_MESON_DEPS: "ninja-build libncurses5-dev libreadline-dev nettle-dev libasio-dev libgnutls28-dev libuv1-dev python3-dev python3-setuptools python3-pip libcppunit-dev libjsoncpp-dev libfmt-dev libmsgpack-dev libargon2-dev" | |
UBUNTU_MINIMAL_DEPS: "libncurses5-dev libreadline-dev nettle-dev libfmt-dev libgnutls28-dev libcppunit-dev libmsgpack-dev libargon2-dev" | |
DEBIAN12_DEPS: "autotools-dev autoconf libtool m4 automake pkg-config wget cmake libncurses5-dev libreadline-dev nettle-dev libasio-dev libgnutls28-dev libuv1-dev python3-pip python3-dev python3-setuptools libcppunit-dev libjsoncpp-dev libfmt-dev libmsgpack-dev libargon2-dev" | |
on: [push, pull_request] | |
jobs: | |
build-ubuntu: | |
name: Ubuntu/GCC Autotools build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Install Dependencies | |
run: | | |
echo "Installing Ubuntu full dependencies:" | |
sudo apt-get update | |
sudo apt-get install -y $UBUNTU_FULL_DEPS | |
- name: Install Cython | |
run: sudo pip3 install Cython | |
- name: Build llhttp dependency | |
run: | | |
mkdir llhttp | |
wget "https://github.com/nodejs/llhttp/archive/refs/tags/release/${LLHTTP_VERSION}.tar.gz" -O llhttp.tar.gz | |
tar -xzf llhttp.tar.gz -C llhttp --strip-components=1 | |
cd llhttp && cmake -DCMAKE_INSTALL_PREFIX=/usr . && make -j2 && sudo make install | |
cd ../ && rm -rf llhttp* | |
- name: Install expected-lite header | |
run: | | |
sudo mkdir -p /usr/local/include/nonstd | |
sudo wget "${EXPECTED_LITE_URL}" -O /usr/local/include/nonstd/expected.hpp | |
- name: Build restinio dependency | |
run: | | |
mkdir restinio && cd restinio | |
wget "https://github.com/Stiffstream/restinio/releases/download/v${RESTINIO_VERSION}/restinio-${RESTINIO_VERSION}.tar.bz2" | |
tar -xjf restinio-${RESTINIO_VERSION}.tar.bz2 | |
cd restinio-${RESTINIO_VERSION}/dev | |
cmake -DCMAKE_INSTALL_PREFIX=/usr/local \ | |
-DRESTINIO_TEST=Off -DRESTINIO_SAMPLE=Off -DRESTINIO_BENCHMARK=Off \ | |
-DRESTINIO_WITH_SOBJECTIZER=Off \ | |
-DRESTINIO_DEP_STANDALONE_ASIO=system -DRESTINIO_DEP_LLHTTP=system \ | |
-DRESTINIO_DEP_FMT=system -DRESTINIO_DEP_EXPECTED_LITE=system . | |
sudo make install | |
cd ../../ && rm -rf restinio* | |
- name: Configure project | |
run: | | |
./autogen.sh | |
./configure --enable-proxy-client | |
- name: Build | |
run: make | |
build-ubuntu-meson: | |
name: Ubuntu/GCC Meson build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Install Dependencies | |
run: | | |
echo "Installing Ubuntu meson dependencies:" | |
sudo apt update | |
sudo apt install -y $UBUNTU_MESON_DEPS | |
- name: Install Python dependencies | |
run: sudo pip3 install meson Cython | |
- name: Configure with Meson | |
run: meson setup build . | |
- name: Build with Ninja | |
run: cd build && ninja | |
build-ubuntu-minimal: | |
name: Ubuntu/GCC minimal build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Install Minimal Dependencies | |
run: | | |
echo "Installing Ubuntu minimal dependencies:" | |
sudo apt-get update | |
sudo apt-get install -y $UBUNTU_MINIMAL_DEPS | |
- name: Configure project with CMake | |
run: | | |
mkdir build && cd build | |
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DOPENDHT_C=Off -DBUILD_TESTING=On \ | |
-DOPENDHT_PEER_DISCOVERY=Off -DOPENDHT_PYTHON=Off \ | |
-DOPENDHT_TOOLS=On -DOPENDHT_PROXY_SERVER=Off -DOPENDHT_PROXY_CLIENT=Off | |
- name: Build | |
run: cd build && make | |
- name: Run Unit tests | |
run: ctest --output-on-failure --test-dir build | |
build-debian12: | |
name: Debian 12/GCC build | |
runs-on: ubuntu-latest | |
container: | |
image: debian:12 | |
volumes: | |
- .:/workspace | |
options: --workdir /workspace | |
env: | |
DEBIAN_FRONTEND: noninteractive | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Install Dependencies | |
run: | | |
apt-get update | |
apt-get install -y $DEBIAN12_DEPS | |
- name: Build llhttp dependency | |
run: | | |
mkdir llhttp | |
wget "https://github.com/nodejs/llhttp/archive/refs/tags/release/${LLHTTP_VERSION}.tar.gz" -O llhttp.tar.gz | |
tar -xzf llhttp.tar.gz -C llhttp --strip-components=1 | |
cd llhttp && cmake -DCMAKE_INSTALL_PREFIX=/usr . && make -j2 && make install | |
cd ../ && rm -rf llhttp* | |
- name: Install expected-lite header | |
run: | | |
mkdir -p /usr/local/include/nonstd | |
wget "${EXPECTED_LITE_URL}" -O /usr/local/include/nonstd/expected.hpp | |
- name: Build restinio dependency | |
run: | | |
mkdir restinio && cd restinio | |
wget "https://github.com/Stiffstream/restinio/releases/download/v${RESTINIO_VERSION}/restinio-${RESTINIO_VERSION}.tar.bz2" | |
tar -xjf restinio-${RESTINIO_VERSION}.tar.bz2 | |
cd restinio-${RESTINIO_VERSION}/dev | |
cmake -DCMAKE_INSTALL_PREFIX=/usr/local \ | |
-DRESTINIO_TEST=Off -DRESTINIO_SAMPLE=Off -DRESTINIO_BENCHMARK=Off \ | |
-DRESTINIO_WITH_SOBJECTIZER=Off \ | |
-DRESTINIO_DEP_STANDALONE_ASIO=system -DRESTINIO_DEP_LLHTTP=system \ | |
-DRESTINIO_DEP_FMT=system -DRESTINIO_DEP_EXPECTED_LITE=system . | |
make install | |
cd ../../ && rm -rf restinio* | |
- name: Build | |
run: | | |
./autogen.sh | |
./configure --enable-proxy-client | |
make | |
build-macos: | |
name: macOS/Clang build | |
runs-on: macos-15 | |
steps: | |
- uses: actions/checkout@v5 | |
- name: Install Homebrew Dependencies | |
run: brew install msgpack-cxx asio gnutls nettle readline fmt jsoncpp argon2 openssl cppunit | |
- name: Install expected-lite header | |
run: | | |
sudo mkdir -p /usr/local/include/nonstd | |
sudo wget "${EXPECTED_LITE_URL}" -O /usr/local/include/nonstd/expected.hpp | |
- name: Build restinio dependency | |
run: | | |
mkdir restinio && cd restinio | |
wget "https://github.com/Stiffstream/restinio/releases/download/v${RESTINIO_VERSION}/restinio-${RESTINIO_VERSION}.tar.bz2" | |
tar -xjf restinio-${RESTINIO_VERSION}.tar.bz2 | |
cd restinio-${RESTINIO_VERSION}/dev | |
cmake -DCMAKE_INSTALL_PREFIX=/usr/local \ | |
-DRESTINIO_TEST=Off -DRESTINIO_SAMPLE=Off -DRESTINIO_BENCHMARK=Off \ | |
-DRESTINIO_WITH_SOBJECTIZER=Off \ | |
-DRESTINIO_DEP_STANDALONE_ASIO=system -DRESTINIO_DEP_LLHTTP=system \ | |
-DRESTINIO_DEP_FMT=system -DRESTINIO_DEP_EXPECTED_LITE=system . | |
make -j2 && sudo make install | |
cd ../../ && rm -rf restinio* | |
- name: Configure project with CMake | |
run: | | |
mkdir build && cd build | |
# Set Homebrew OpenSSL paths | |
export PATH="/opt/homebrew/opt/openssl@3/bin:$PATH" | |
export LDFLAGS="-L/usr/local/opt/openssl@3/lib" | |
export CPPFLAGS="-I/usr/local/opt/openssl@3/include" | |
export PKG_CONFIG_PATH="/usr/local/opt/openssl@3/lib/pkgconfig" | |
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local \ | |
-DOPENDHT_DOWNLOAD_DEPS=ON \ | |
-DCMAKE_BUILD_TYPE=Debug \ | |
-DOPENDHT_C=On -DBUILD_TESTING=On \ | |
-DOPENDHT_PEER_DISCOVERY=On -DOPENDHT_PYTHON=Off \ | |
-DOPENDHT_TOOLS=On -DOPENDHT_PROXY_SERVER=On \ | |
-DOPENDHT_PROXY_CLIENT=On -DOPENDHT_PUSH_NOTIFICATIONS=On | |
- name: Build | |
run: cd build && make |