From 8215a6ac2fa3f443de1dd81c04dfdc728bdf8fd1 Mon Sep 17 00:00:00 2001 From: Jade Date: Fri, 4 Oct 2024 04:26:49 +0800 Subject: [PATCH] [ci] Merge Windows into CMake matrix (#7153) --- .github/workflows/cmake.yml | 58 +++++++++++++++---------------------- 1 file changed, 23 insertions(+), 35 deletions(-) diff --git a/.github/workflows/cmake.yml b/.github/workflows/cmake.yml index 1192a2f3661..37cf09a671e 100644 --- a/.github/workflows/cmake.yml +++ b/.github/workflows/cmake.yml @@ -24,7 +24,11 @@ jobs: name: macOS container: "" env: "PATH=\"/opt/homebrew/opt/protobuf@3/bin:$PATH\"" - flags: "--preset with-sccache -DCMAKE_BUILD_TYPE=Release -DWITH_JAVA=OFF -DWITH_EXAMPLES=ON -DCMAKE_LIBRARY_PATH=/opt/homebrew/opt/protobuf@3/lib -DProtobuf_INCLUDE_DIR=/opt/homebrew/opt/protobuf@3/include -DProtobuf_PROTOC_EXECUTABLE=/opt/homebrew/opt/protobuf@3/bin/protoc" + flags: "--preset with-sccache -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DCMAKE_LIBRARY_PATH=/opt/homebrew/opt/protobuf@3/lib -DProtobuf_INCLUDE_DIR=/opt/homebrew/opt/protobuf@3/include -DProtobuf_PROTOC_EXECUTABLE=/opt/homebrew/opt/protobuf@3/bin/protoc" + - os: windows-2022 + name: Windows + container: "" + flags: "--preset with-sccache -DCMAKE_BUILD_TYPE=Release -DWITH_EXAMPLES=ON -DUSE_SYSTEM_FMTLIB=ON -DUSE_SYSTEM_LIBUV=ON -DUSE_SYSTEM_EIGEN=OFF -DCMAKE_TOOLCHAIN_FILE=${{ runner.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_INSTALL_OPTIONS=--clean-after-build -DVCPKG_TARGET_TRIPLET=x64-windows-release -DVCPKG_HOST_TRIPLET=x64-windows-release" name: "Build - ${{ matrix.name }}" runs-on: ${{ matrix.os }} @@ -35,52 +39,30 @@ jobs: run: sudo apt-get update && sudo apt-get install -y libopencv-dev libopencv4.5-java libprotobuf-dev protobuf-compiler ninja-build - name: Install dependencies (macOS) - run: brew install opencv protobuf@3 ninja if: runner.os == 'macOS' + run: brew install opencv protobuf@3 ninja - - name: Install sccache - uses: mozilla-actions/sccache-action@v0.0.5 - - - uses: actions/checkout@v4 - - - name: configure - run: cmake ${{ matrix.flags }} - env: - SCCACHE_WEBDAV_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - SCCACHE_WEBDAV_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - - - name: build - run: cmake --build build-cmake --parallel $(nproc) - env: - SCCACHE_WEBDAV_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} - SCCACHE_WEBDAV_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - - - name: test - working-directory: build-cmake - run: ctest --output-on-failure - - build-windows: - name: "Build - Windows" - runs-on: windows-2022 - steps: - uses: ilammy/msvc-dev-cmd@v1.13.0 + if: runner.os == 'Windows' - - name: Install CMake + - name: Install CMake (Windows only) + if: runner.os == 'Windows' uses: lukka/get-cmake@v3.29.3 - - name: Run sccache-cache - uses: mozilla-actions/sccache-action@v0.0.5 - - - uses: actions/checkout@v4 - - - name: Run vcpkg + - name: Run vcpkg (Windows only) + if: runner.os == 'Windows' uses: lukka/run-vcpkg@v11.5 with: vcpkgDirectory: ${{ runner.workspace }}/vcpkg vcpkgGitCommitId: 37c3e63a1306562f7f59c4c3c8892ddd50fdf992 # HEAD on 2024-02-24 + - name: Install sccache + uses: mozilla-actions/sccache-action@v0.0.5 + + - uses: actions/checkout@v4 + - name: configure - run: cmake --preset with-sccache -DCMAKE_BUILD_TYPE=Release -DWITH_JAVA=OFF -DWITH_EXAMPLES=ON -DUSE_SYSTEM_FMTLIB=ON -DUSE_SYSTEM_LIBUV=ON -DUSE_SYSTEM_EIGEN=OFF -DCMAKE_TOOLCHAIN_FILE=${{ runner.workspace }}/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_INSTALL_OPTIONS=--clean-after-build -DVCPKG_TARGET_TRIPLET=x64-windows-release -DVCPKG_HOST_TRIPLET=x64-windows-release + run: cmake ${{ matrix.flags }} env: SCCACHE_WEBDAV_USERNAME: ${{ secrets.ARTIFACTORY_USERNAME }} SCCACHE_WEBDAV_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} @@ -92,6 +74,12 @@ jobs: SCCACHE_WEBDAV_PASSWORD: ${{ secrets.ARTIFACTORY_PASSWORD }} - name: test + if: runner.os != 'Windows' + working-directory: build-cmake + run: ctest --output-on-failure + + - name: test (windows) + if: runner.os == 'Windows' working-directory: build-cmake # UnitTest_test segfaults on exit occasionally run: ctest --output-on-failure -E 'UnitTest'