From 75f6fe4f91497ce494ab03d37ce1d124c24d51fc Mon Sep 17 00:00:00 2001 From: Ivo Hedtke Date: Thu, 24 Sep 2026 09:28:59 +0200 Subject: [PATCH 1/3] Update CI runners to macos-26 and add windows-2025-vs2026 Test on Windows with both Visual Studio 2022 (windows-2022) and Visual Studio 2026 (windows-2025-vs2026). Co-Authored-By: Claude Opus 5.5 (1M context) --- .github/workflows/main.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 97c2b095..87dab095 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -41,7 +41,12 @@ jobs: verbose: true # optional (default = false) fail_ci_if_error: true test_release_win: - runs-on: windows-2022 + strategy: + fail-fast: false + matrix: + # windows-2022 ships Visual Studio 2022, windows-2025-vs2026 ships Visual Studio 2026 + os: [ windows-2022, windows-2025-vs2026 ] + runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - uses: turtlebrowser/get-conan@main @@ -77,7 +82,7 @@ jobs: - name: Run tests run: ./test/tests test_release_mac: - runs-on: macos-15 + runs-on: macos-26 steps: - uses: actions/checkout@v3 - name: Install Conan From ec1ffc8ecda8d02ee949ba77c01621ad3e32c068 Mon Sep 17 00:00:00 2001 From: Ivo Hedtke Date: Thu, 24 Sep 2026 10:04:08 +0200 Subject: [PATCH 2/3] Build missing Conan binaries in all CI jobs Co-Authored-By: Claude Opus 5.5 (1M context) --- .github/workflows/main.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 87dab095..466321d1 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -23,7 +23,7 @@ jobs: pushd ~/.conan2/profiles sed -i 's/gnu17/17/g' * popd - conan install -of . -pr debug -o with_tests=True . + conan install -of . -pr debug -o with_tests=True --build=missing . - name: Run CMake run: cmake --preset conan-debug -DUSE_COVERAGE=ON . - name: Compile @@ -55,7 +55,7 @@ jobs: run: | conan profile detect powershell -Command "(gc $(conan profile path default)) -replace 'compiler.cppstd=14', 'compiler.cppstd=17' | Out-File -encoding ASCII $(conan profile path default)" - conan install -of . -o with_tests=True . + conan install -of . -o with_tests=True --build=missing . - name: Run CMake run: cmake --preset conan-default . - name: Compile @@ -135,7 +135,7 @@ jobs: pushd ~/.conan2/profiles sed -i 's/gnu17/17/g' * popd - conan install -of . . + conan install -of . --build=missing . - name: Create CMake Compilation Database run: cmake --preset conan-release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON . - name: Run Clang-Tidy From bca8838d8f8c4e4c968251b26560fa312a8967eb Mon Sep 17 00:00:00 2001 From: Ivo Hedtke Date: Thu, 24 Sep 2026 10:34:54 +0200 Subject: [PATCH 3/3] Cache Conan packages between CI runs Co-Authored-By: Claude Opus 5.5 (1M context) --- .github/workflows/main.yml | 61 ++++++++++++++++++++++++++++++++++---- 1 file changed, 56 insertions(+), 5 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 466321d1..08d255d8 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -15,7 +15,7 @@ jobs: steps: - uses: actions/checkout@v3 - uses: turtlebrowser/get-conan@main - - name: Run Conan Install + - name: Detect Conan Profile run: | conan profile detect conan profile detect --name debug @@ -23,7 +23,18 @@ jobs: pushd ~/.conan2/profiles sed -i 's/gnu17/17/g' * popd + conan profile show > conan-profile.txt + - name: Cache Conan Packages + uses: actions/cache@v6 + with: + path: ~/.conan2/p + # The profile contains the compiler version, so a compiler update on the runner starts a fresh cache + key: conan-${{ github.job }}-${{ matrix.os || runner.os }}-${{ hashFiles('conanfile.py', 'conan-profile.txt') }} + restore-keys: conan-${{ github.job }}-${{ matrix.os || runner.os }}- + - name: Run Conan Install + run: | conan install -of . -pr debug -o with_tests=True --build=missing . + conan cache clean "*" - name: Run CMake run: cmake --preset conan-debug -DUSE_COVERAGE=ON . - name: Compile @@ -51,11 +62,21 @@ jobs: - uses: actions/checkout@v3 - uses: turtlebrowser/get-conan@main - uses: ilammy/msvc-dev-cmd@v1 - - name: Run Conan Install + - name: Detect Conan Profile run: | conan profile detect powershell -Command "(gc $(conan profile path default)) -replace 'compiler.cppstd=14', 'compiler.cppstd=17' | Out-File -encoding ASCII $(conan profile path default)" + conan profile show > conan-profile.txt + - name: Cache Conan Packages + uses: actions/cache@v6 + with: + path: ~/.conan2/p + key: conan-${{ github.job }}-${{ matrix.os || runner.os }}-${{ hashFiles('conanfile.py', 'conan-profile.txt') }} + restore-keys: conan-${{ github.job }}-${{ matrix.os || runner.os }}- + - name: Run Conan Install + run: | conan install -of . -o with_tests=True --build=missing . + conan cache clean "*" - name: Run CMake run: cmake --preset conan-default . - name: Compile @@ -87,13 +108,23 @@ jobs: - uses: actions/checkout@v3 - name: Install Conan run: brew install conan - - name: Run Conan Install + - name: Detect Conan Profile run: | conan profile detect pushd ~/.conan2/profiles sed -i'' -e 's/gnu17/17/g' * popd + conan profile show > conan-profile.txt + - name: Cache Conan Packages + uses: actions/cache@v6 + with: + path: ~/.conan2/p + key: conan-${{ github.job }}-${{ matrix.os || runner.os }}-${{ hashFiles('conanfile.py', 'conan-profile.txt') }} + restore-keys: conan-${{ github.job }}-${{ matrix.os || runner.os }}- + - name: Run Conan Install + run: | conan install -of . -o with_tests=True --build=missing . + conan cache clean "*" - name: Run CMake run: cmake --preset conan-release . - name: Compile @@ -108,13 +139,23 @@ jobs: steps: - uses: actions/checkout@v3 - uses: turtlebrowser/get-conan@main - - name: Run Conan Install + - name: Detect Conan Profile run: | conan profile detect pushd ~/.conan2/profiles sed -i'' -e 's/gnu17/17/g' * popd + conan profile show > conan-profile.txt + - name: Cache Conan Packages + uses: actions/cache@v6 + with: + path: ~/.conan2/p + key: conan-${{ github.job }}-${{ matrix.os || runner.os }}-${{ hashFiles('conanfile.py', 'conan-profile.txt') }} + restore-keys: conan-${{ github.job }}-${{ matrix.os || runner.os }}- + - name: Run Conan Install + run: | conan install -of . -o with_tests=True --build=missing . + conan cache clean "*" - name: Run CMake run: cmake --preset conan-release . - name: Compile @@ -129,13 +170,23 @@ jobs: steps: - uses: actions/checkout@v3 - uses: turtlebrowser/get-conan@main - - name: Run Conan Install + - name: Detect Conan Profile run: | conan profile detect pushd ~/.conan2/profiles sed -i 's/gnu17/17/g' * popd + conan profile show > conan-profile.txt + - name: Cache Conan Packages + uses: actions/cache@v6 + with: + path: ~/.conan2/p + key: conan-${{ github.job }}-${{ matrix.os || runner.os }}-${{ hashFiles('conanfile.py', 'conan-profile.txt') }} + restore-keys: conan-${{ github.job }}-${{ matrix.os || runner.os }}- + - name: Run Conan Install + run: | conan install -of . --build=missing . + conan cache clean "*" - name: Create CMake Compilation Database run: cmake --preset conan-release -DCMAKE_EXPORT_COMPILE_COMMANDS=ON . - name: Run Clang-Tidy