Reduce mDNS network traffic #20
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 | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| jobs: | |
| codestyle: | |
| name: Code Style Check | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| with: | |
| fetch-depth: 0 # Full history needed for diff against main | |
| - name: Fetch main branch | |
| run: git fetch origin main:refs/remotes/origin/main | |
| - name: Install clang-format from LLVM repository | |
| run: | | |
| # Add LLVM GPG key | |
| wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc | |
| # Add LLVM repository | |
| CODENAME=$(lsb_release -cs) | |
| echo "deb http://apt.llvm.org/${CODENAME}/ llvm-toolchain-${CODENAME}-18 main" | sudo tee /etc/apt/sources.list.d/llvm.list | |
| # Install clang-format-18 and generic clang-format | |
| sudo apt-get update | |
| sudo apt-get install -y clang-format-18 clang-format | |
| - name: Check code style | |
| env: | |
| CI: true | |
| run: ./scripts/codestyle/format_diff.sh -v . | |
| - name: Upload format diff | |
| if: failure() | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: format-diff | |
| path: diff.md | |
| tests: | |
| name: Unit Tests | |
| runs-on: ubuntu-latest | |
| needs: codestyle | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| cmake \ | |
| ninja-build \ | |
| pkg-config \ | |
| libssl-dev \ | |
| libwebsockets-dev \ | |
| libcjson-dev \ | |
| libavahi-compat-libdnssd-dev | |
| - name: Configure tests | |
| run: cmake -B tests/build -S tests -G Ninja | |
| - name: Build tests | |
| run: cmake --build tests/build | |
| - name: Run tests | |
| run: ctest --test-dir tests/build --output-on-failure | |
| build-linux: | |
| name: Build (Linux) | |
| runs-on: ubuntu-latest | |
| needs: tests | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y \ | |
| cmake \ | |
| ninja-build \ | |
| pkg-config \ | |
| libssl-dev \ | |
| libwebsockets-dev \ | |
| libcjson-dev \ | |
| libavahi-compat-libdnssd-dev | |
| - name: Configure | |
| run: cmake -B build -G Ninja | |
| - name: Build | |
| run: cmake --build build | |
| build-windows: | |
| name: Build (Windows) | |
| runs-on: windows-latest | |
| needs: tests | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Install dependencies | |
| shell: pwsh | |
| run: | | |
| $env:VCPKG_ROOT = $env:VCPKG_INSTALLATION_ROOT | |
| vcpkg install openssl:x64-windows libwebsockets:x64-windows cjson:x64-windows pthreads:x64-windows mdnsresponder:x64-windows | |
| - name: Configure | |
| shell: pwsh | |
| run: | | |
| $env:VCPKG_ROOT = $env:VCPKG_INSTALLATION_ROOT | |
| cmake -B build -DCMAKE_TOOLCHAIN_FILE="$env:VCPKG_INSTALLATION_ROOT\scripts\buildsystems\vcpkg.cmake" | |
| - name: Build | |
| run: cmake --build build --config Release | |
| build-macos: | |
| name: Build (macOS) | |
| runs-on: macos-latest | |
| needs: tests | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
| - name: Install dependencies | |
| run: | | |
| brew install openssl@3 libwebsockets cjson ninja | |
| - name: Configure | |
| run: | | |
| cmake -B build -G Ninja \ | |
| -DOPENSSL_ROOT_DIR=$(brew --prefix openssl@3) \ | |
| -DOPENSSL_INCLUDE_DIR=$(brew --prefix openssl@3)/include \ | |
| -DOPENSSL_CRYPTO_LIBRARY=$(brew --prefix openssl@3)/lib/libcrypto.dylib \ | |
| -DOPENSSL_SSL_LIBRARY=$(brew --prefix openssl@3)/lib/libssl.dylib | |
| - name: Build | |
| run: cmake --build build |