name: CI on: workflow_dispatch: pull_request: types: - opened - reopened - synchronize - ready_for_review push: branches: [master*, release*] env: GIT_COMMIT: ${{ github.sha }} jobs: windows-2022: runs-on: windows-2022 timeout-minutes: 20 env: QT_BASE_DIR: ${{ github.workspace }}\deps\Qt QT_VERSION: 5.15.2 steps: - name: Checkout uses: actions/checkout@v4 with: submodules: "recursive" - name: Cache Qt id: cache-qt uses: actions/cache@v1 with: path: ${{ env.QT_BASE_DIR }} key: ${{ runner.os }}-Qt_${{ env.QT_VERSION }} - name: Install Qt if: steps.cache-qt.outputs.cache-hit != 'true' run: python ./scripts/install_deps.py --only qt - name: Install dependencies run: | pip install pyyaml python ./scripts/install_deps.py - name: Setup VC++ environment uses: ilammy/msvc-dev-cmd@v1 - name: Configure env: CMAKE_PREFIX_PATH: "${{ env.QT_BASE_DIR }}\\${{ env.QT_VERSION }}\\msvc2019_64\\" run: cmake -B build --preset=windows-release - name: Build run: cmake --build build - name: Test run: ./build/bin/unittests macos: runs-on: ${{ matrix.runtime.os }} timeout-minutes: ${{ matrix.runtime.timeout }} name: ${{ matrix.runtime.name }} defaults: run: shell: ${{ matrix.runtime.shell }} strategy: matrix: runtime: - name: "macos-10-intel" timeout: 20 os: "macos-14-large" arch: x64 target: "10.14" shell: "bash" - name: "macos-11-m1" timeout: 10 os: "macos-14" arch: arm64 target: "11" shell: "/usr/bin/arch -arch arm64e /bin/bash --noprofile --norc -eo pipefail {0}" steps: - name: Setup PATH run: | case "$ARCH" in "arm64") echo "/opt/homebrew/bin" >> $GITHUB_PATH ;; esac env: ARCH: ${{ matrix.runtime.arch }} - name: Checkout uses: actions/checkout@v4 with: submodules: "recursive" - name: Install dependencies run: | pip install pyyaml python ./scripts/install_deps.py - name: Configure env: CMAKE_OSX_DEPLOYMENT_TARGET: ${{ matrix.runtime.target }} run: cmake -B build --preset=macos-release -DCMAKE_PREFIX_PATH=$(brew --prefix qt@5) - name: Build run: cmake --build build - name: Test run: ./build/bin/unittests linux: runs-on: ${{ matrix.distro.runs-on }} timeout-minutes: 10 name: linux-${{ matrix.distro.name }} container: ${{ matrix.distro.container }} strategy: matrix: distro: - name: centos-7.6 container: symless/synergy-core:centos7.6 runs-on: ubuntu-latest legacy-cmake: true - name: centos-8 container: symless/synergy-core:centos8 runs-on: ubuntu-latest legacy-cmake: true - name: debian-11 container: symless/synergy-core:debian11 runs-on: ubuntu-latest legacy-cmake: true - name: debian-12 container: symless/synergy-core:debiansid runs-on: ubuntu-latest - name: fedora-37 container: symless/synergy-core:fedora37 runs-on: ubuntu-latest legacy-cmake: true - name: fedora-38 container: symless/synergy-core:fedora38 runs-on: ubuntu-latest legacy-cmake: true - name: ubuntu-20.04 container: symless/synergy-core:ubuntu20.04 runs-on: ubuntu-latest legacy-cmake: true - name: ubuntu-22.04 container: symless/synergy-core:ubuntu22.04 runs-on: ubuntu-latest - name: ubuntu-24.04 runs-on: ubuntu-24.04 install-deps: true steps: # Use @v3 since some older Linux distro versions don't support @v4 - name: Checkout uses: actions/checkout@v3 with: submodules: "recursive" - name: Install dependencies if: ${{ matrix.distro.install-deps }} run: python ./scripts/install_deps.py - name: Configure if: ${{ !matrix.distro.legacy-cmake }} run: cmake -B build --preset=linux-release # Some older Linux distro versions don't support modern CMake presets. - name: Configure (legacy) if: ${{ matrix.distro.legacy-cmake }} run: cmake -B build -DCMAKE_BUILD_TYPE=Release - name: Build run: cmake --build build - name: Test run: ./build/bin/unittests