Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
7666570
ci: prepare CI for asynchronous support
daantimmer Mar 18, 2026
5fe4c9b
move ccache/sccache to CMakeLists.txt
daantimmer Mar 18, 2026
9132c9c
fix: update artifact path for host build test
daantimmer Mar 18, 2026
5fff834
add configuration to host-single-Debug-synchronous testPreset
daantimmer Mar 18, 2026
391bb95
remove fail-fast from host_build
daantimmer Mar 18, 2026
e303c78
remove fail-fast from host_build
daantimmer Mar 18, 2026
3cfd783
Apply suggestions from code review
daantimmer Mar 18, 2026
96105e6
Enhance CMake configuration for cache support in standalone mode
daantimmer Mar 18, 2026
9137726
prefer sscache over ccache when both are available
daantimmer Mar 18, 2026
b6e7ba7
use sccache for windows ccache for macos and ubuntu
daantimmer Mar 18, 2026
6ebabce
only use ccache when available
daantimmer Mar 19, 2026
32a81ff
Add Ninja generator to host single configurations for synchronous builds
daantimmer Mar 19, 2026
f3dadc0
Refactor CI configuration to unify ccache usage across OS targets
daantimmer Mar 19, 2026
829d95b
Add MSVC setup step for Windows builds in CI workflow
daantimmer Mar 19, 2026
747ed32
Enhance CI configuration to support synchronous builds for Linux, Win…
daantimmer Mar 19, 2026
ab3d179
Add MSBuild step for Windows and rename Linux presets to Ubuntu
daantimmer Mar 19, 2026
5805539
Potential fix for pull request finding
daantimmer Mar 19, 2026
82c0b5f
Add Windows MSVC toolchain file and update Windows debug preset confi…
daantimmer Mar 19, 2026
51ea251
Add WSL and VSWhere toolchain files for enhanced CI support
daantimmer Mar 19, 2026
4facde8
Add Windows.Kits.cmake for Windows SDK integration in CI
daantimmer Mar 19, 2026
10bc5a7
Improve ccache message to include the full path of the ccache executable
daantimmer Mar 19, 2026
cbc2807
Refactor CI configuration to remove Windows MSBuild step and update C…
daantimmer Mar 19, 2026
b9ab73e
Add support for sccache in CI configuration for MSVC builds
daantimmer Mar 19, 2026
547202f
Remove JSON linter from enabled checks in mega-linter configuration
daantimmer Mar 19, 2026
f23b282
Remove sccache configuration from Windows Debug synchronous preset
daantimmer Mar 19, 2026
be6ad7a
Add conditional ccache configuration for Windows and non-Windows jobs
daantimmer Mar 19, 2026
70fd64a
Refactor CMake configuration to unify ccache and sccache handling for…
daantimmer Mar 19, 2026
cf81b18
Add support for /FS option in MSVC builds for improved file system pe…
daantimmer Mar 19, 2026
bc971a7
Set MSVC debug information format and update CMake policy for better …
daantimmer Mar 19, 2026
0151cee
Remove conditional compiler launcher configuration and set ccache as …
daantimmer Mar 19, 2026
6dd5d94
Simplify ccache configuration by removing OS-specific conditions in C…
daantimmer Mar 19, 2026
7c44a6a
Update ccache key to include target matrix for better cache management
daantimmer Mar 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
86 changes: 21 additions & 65 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,77 +21,35 @@ env:
GTEST_COLOR: 1

jobs:
build-windows:
name: Windows Host Build
build-in-devcontainer:
name: Devcontainer Build
runs-on: [ubuntu-latest]
container: ghcr.io/philips-software/amp-devcontainer-cpp:v6.8.2@sha256:8d6d0b49bef9b1f572793dee8dcc05edcbe4f44f108f075640dda284ff3e2d4e # v6.8.2
strategy:
matrix:
target: [Host, Windows]
fail-fast: false
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
- if: ${{ matrix.target == 'Windows' }}
uses: actions/cache@cdf6c1fa76f9f475f3d7449005a359c84ca0f306 # v5.0.3
id: cache-winsdk
with:
path: /winsdk
key: cache-winsdk-10.0.26100-14.43.17.13
- if: ${{ steps.cache-winsdk.outputs.cache-hit != 'true' }}
- if: ${{ matrix.target == 'Windows' && steps.cache-winsdk.outputs.cache-hit != 'true' }}
run: ./get-winsdk.sh
- uses: hendrikmuhs/ccache-action@1bbbcda0748b3e340dee71a314fa68ffcbd6df79 # v1.2.21
with:
key: ${{ github.job }}
max-size: 2G
- uses: lukka/run-cmake@af1be47fd7c933593f687731bc6fdbee024d3ff4 # v10.8
with:
configurePreset: "Windows"
buildPreset: "Windows-Release"
configurePresetAdditionalArgs: "['-DCMAKE_C_COMPILER_LAUNCHER=ccache', '-DCMAKE_CXX_COMPILER_LAUNCHER=ccache']"

build-linux:
name: Linux Host Build
runs-on: [ubuntu-24.04]
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: hendrikmuhs/ccache-action@1bbbcda0748b3e340dee71a314fa68ffcbd6df79 # v1.2.21
with:
key: ${{ github.job }}
key: ${{ github.job }}-${{ matrix.target }}
max-size: 2G
- uses: seanmiddleditch/gha-setup-ninja@3b1f8f94a2f8254bd26914c4ab9474d4f0015f67 # v6
- uses: lukka/run-cmake@af1be47fd7c933593f687731bc6fdbee024d3ff4 # v10.8
with:
configurePreset: "Host"
buildPreset: "Host-Release"
testPreset: "Host-Release"
configurePresetAdditionalArgs: "['-DCMAKE_C_COMPILER_LAUNCHER=ccache', '-DCMAKE_CXX_COMPILER_LAUNCHER=ccache']"
- name: Upload test logs
if: ${{ failure() }}
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: test-logs
path: build/Host/Testing/Temporary/

build-linux-devcontainer:
name: Linux Host Build in Devcontainer
runs-on: [ubuntu-latest]
container: ghcr.io/philips-software/amp-devcontainer-cpp:v6.8.2@sha256:8d6d0b49bef9b1f572793dee8dcc05edcbe4f44f108f075640dda284ff3e2d4e # v6.8.2
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: hendrikmuhs/ccache-action@1bbbcda0748b3e340dee71a314fa68ffcbd6df79 # v1.2.21
with:
key: ${{ github.job }}
max-size: 2G
- uses: lukka/run-cmake@af1be47fd7c933593f687731bc6fdbee024d3ff4 # v10.8
with:
configurePreset: "Host"
buildPreset: "Host-Release"
testPreset: "Host-Release"
configurePresetAdditionalArgs: "['-DCMAKE_C_COMPILER_LAUNCHER=ccache', '-DCMAKE_CXX_COMPILER_LAUNCHER=ccache']"
- name: Upload test logs
if: ${{ failure() }}
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: test-logs
path: build/Host/Testing/Temporary/
configurePreset: "${{ matrix.target}}"
buildPreset: "${{ matrix.target}}-Release"

test-linux:
name: Linux Host Test
name: Acceptance Test on Linux
runs-on: [ubuntu-latest]
permissions:
contents: read
Expand All @@ -109,7 +67,6 @@ jobs:
with:
configurePreset: "Host"
buildPreset: "Host-Debug"
configurePresetAdditionalArgs: "['-DCMAKE_C_COMPILER_LAUNCHER=ccache', '-DCMAKE_CXX_COMPILER_LAUNCHER=ccache']"
- run: |
bats --formatter junit cucumber_cpp/acceptance_test/test.bats | tee test-report.xml
- uses: EnricoMi/publish-unit-test-result-action@c950f6fb443cb5af20a377fd0dfaa78838901040 # v2.23.0
Expand All @@ -119,28 +76,27 @@ jobs:

host_build_test:
name: Host Build & Test
runs-on: ${{ matrix.os }}
runs-on: ${{ matrix.os }}-${{ matrix.version}}
strategy:
matrix:
os: [macos-latest, windows-latest]
os: [macos, windows, ubuntu]
version: [latest]
type: [synchronous]
fail-fast: false
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- uses: hendrikmuhs/ccache-action@1bbbcda0748b3e340dee71a314fa68ffcbd6df79 # v1.2.21
with:
key: ${{ github.job }}-${{ matrix.os }}
key: ${{ github.job }}-${{ matrix.os }}-${{ matrix.type }}
max-size: 2G
variant: sccache
- uses: lukka/run-cmake@af1be47fd7c933593f687731bc6fdbee024d3ff4 # v10.8
with:
configurePreset: "host-single-Debug"
buildPreset: "host-single-Debug"
testPreset: "host-single-Debug"
configurePresetAdditionalArgs: "['-DCMAKE_C_COMPILER_LAUNCHER=sccache', '-DCMAKE_CXX_COMPILER_LAUNCHER=sccache']"
workflowPreset: "${{ matrix.os }}-Debug-${{ matrix.type }}"
- name: Upload test logs
if: ${{ failure() }}
uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
with:
name: test-logs
path: build/host-single-Dbebug/Testing/Temporary/
path: .build/${{ matrix.os }}-Debug-${{ matrix.type }}/Testing/Temporary/
2 changes: 0 additions & 2 deletions .github/workflows/static-analysis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ jobs:
configurePreset: "Coverage"
buildPreset: "Coverage"
testPreset: "Coverage"
configurePresetAdditionalArgs: "['-DCMAKE_C_COMPILER_LAUNCHER=ccache', '-DCMAKE_CXX_COMPILER_LAUNCHER=ccache']"
env:
GTEST_OUTPUT: "xml:${{ github.workspace }}/testresults/"

Expand Down Expand Up @@ -84,5 +83,4 @@ jobs:
with:
configurePreset: "Host"
buildPreset: "Host-Debug"
configurePresetAdditionalArgs: "['-DCMAKE_C_COMPILER_LAUNCHER=ccache', '-DCMAKE_CXX_COMPILER_LAUNCHER=ccache']"
- uses: github/codeql-action/analyze@b1bff81932f5cdfc8695c7752dcee935dcd061c8 # v4.33.0
1 change: 0 additions & 1 deletion .mega-linter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ ENABLE:
- ACTION
- CPP
- DOCKERFILE
- JSON
- MARKDOWN
- REPOSITORY
- SPELL
Expand Down
105 changes: 99 additions & 6 deletions CMakePresets.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,17 +33,35 @@
"generator": "Ninja Multi-Config"
},
{
"name": "host-single-Debug",
"displayName": "Configuration for Host Tooling and Tests, Single Config Generator, Debug",
"name": "host-single-Debug-synchronous",
"hidden": true,
"inherits": "defaults",
"generator": "Ninja",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"name": "ubuntu-Debug-synchronous",
"displayName": "Configuration for Linux Debug and Tests, Single Config Generator, synchronous",
"inherits": "host-single-Debug-synchronous"
},
{
"name": "windows-Debug-synchronous",
"displayName": "Configuration for Windows Debug and Tests, Single Config Generator, synchronous",
"inherits": "host-single-Debug-synchronous",
"toolchainFile": "${sourceDir}/cmake/Windows.MSVC.toolchain.cmake"
},
{
"name": "macos-Debug-synchronous",
"displayName": "Configuration for macOS Debug and Tests, Single Config Generator, synchronous",
"inherits": "host-single-Debug-synchronous"
},
{
"name": "host-single-time-profile",
"displayName": "Configuration time profiling",
"inherits": "defaults",
"generator": "Ninja",
"cacheVariables": {
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++",
Expand Down Expand Up @@ -92,9 +110,19 @@
"configurePreset": "Host-Iwyu"
},
{
"name": "host-single-Debug",
"name": "ubuntu-Debug-synchronous",
"configuration": "Debug",
"configurePreset": "ubuntu-Debug-synchronous"
},
{
"name": "windows-Debug-synchronous",
"configuration": "Debug",
"configurePreset": "host-single-Debug"
"configurePreset": "windows-Debug-synchronous"
},
{
"name": "macos-Debug-synchronous",
"configuration": "Debug",
"configurePreset": "macos-Debug-synchronous"
},
{
"name": "host-single-time-profile",
Expand Down Expand Up @@ -148,10 +176,75 @@
"inherits": "defaults"
},
{
"name": "host-single-Debug",
"configurePreset": "host-single-Debug",
"name": "ubuntu-Debug-synchronous",
"configurePreset": "ubuntu-Debug-synchronous",
"configuration": "Debug",
"inherits": "defaults"
},
{
"name": "windows-Debug-synchronous",
"configurePreset": "windows-Debug-synchronous",
"configuration": "Debug",
"inherits": "defaults"
},
{
"name": "macos-Debug-synchronous",
"configurePreset": "macos-Debug-synchronous",
"configuration": "Debug",
"inherits": "defaults"
}
],
"workflowPresets": [
{
"name": "ubuntu-Debug-synchronous",
"steps": [
{
"type": "configure",
"name": "ubuntu-Debug-synchronous"
},
{
"type": "build",
"name": "ubuntu-Debug-synchronous"
},
{
"type": "test",
"name": "ubuntu-Debug-synchronous"
}
]
},
{
"name": "windows-Debug-synchronous",
"steps": [
{
"type": "configure",
"name": "windows-Debug-synchronous"
},
{
"type": "build",
"name": "windows-Debug-synchronous"
},
{
"type": "test",
"name": "windows-Debug-synchronous"
}
]
},
{
"name": "macos-Debug-synchronous",
"steps": [
{
"type": "configure",
"name": "macos-Debug-synchronous"
},
{
"type": "build",
"name": "macos-Debug-synchronous"
},
{
"type": "test",
"name": "macos-Debug-synchronous"
}
]
}
]
}
Loading
Loading