ci: prepare CI for asynchronous support#311
ci: prepare CI for asynchronous support#311Daan Timmer (daantimmer) wants to merge 10 commits intomainfrom
Conversation
✅
|
| Descriptor | Linter | Files | Fixed | Errors | Warnings | Elapsed time |
|---|---|---|---|---|---|---|
| ✅ ACTION | actionlint | 6 | 0 | 0 | 0.04s | |
| ✅ CPP | clang-format | 229 | 0 | 0 | 0 | 2.04s |
| ✅ DOCKERFILE | hadolint | 1 | 0 | 0 | 0.04s | |
| ✅ JSON | jsonlint | 8 | 0 | 0 | 0.45s | |
| ✅ JSON | prettier | 8 | 6 | 0 | 0 | 0.65s |
| markdownlint | 6 | 3 | 16 | 0 | 1.3s | |
| ✅ MARKDOWN | markdown-table-formatter | 6 | 3 | 0 | 0 | 0.36s |
| ✅ REPOSITORY | git_diff | yes | no | no | 0.13s | |
| ✅ REPOSITORY | grype | yes | no | no | 34.45s | |
| ✅ REPOSITORY | ls-lint | yes | no | no | 0.09s | |
| ✅ REPOSITORY | secretlint | yes | no | no | 3.88s | |
| ✅ REPOSITORY | syft | yes | no | no | 2.22s | |
| ✅ REPOSITORY | trivy | yes | no | no | 12.03s | |
| ✅ REPOSITORY | trivy-sbom | yes | no | no | 0.24s | |
| ✅ REPOSITORY | trufflehog | yes | no | no | 4.16s | |
| lychee | 83 | 1 | 0 | 3.56s | ||
| ✅ YAML | prettier | 10 | 0 | 0 | 0 | 0.88s |
| ✅ YAML | v8r | 10 | 0 | 0 | 7.32s | |
| ✅ YAML | yamllint | 10 | 0 | 0 | 0.64s |
Detailed Issues
⚠️ SPELL / lychee - 1 error
[404] https://github.com/yourname/amp-cucumber-cpp-runner.git | Network error: Not Found
📝 Summary
---------------------
🔍 Total..........157
✅ Successful.....156
⏳ Timeouts.........0
🔀 Redirected.......0
👻 Excluded.........0
❓ Unknown..........0
🚫 Errors...........1
Errors in CONTRIBUTING.md
[404] https://github.com/yourname/amp-cucumber-cpp-runner.git | Network error: Not Found
⚠️ MARKDOWN / markdownlint - 16 errors
CHANGELOG.md:30 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:37 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Chores"]
CHANGELOG.md:45 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "⚠ BREAKING CHANGES"]
CHANGELOG.md:49 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:58 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:64 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Chores"]
CHANGELOG.md:72 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "⚠ BREAKING CHANGES"]
CHANGELOG.md:76 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:81 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Bug Fixes"]
CHANGELOG.md:90 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:101 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Chores"]
CHANGELOG.md:109 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "⚠ BREAKING CHANGES"]
CHANGELOG.md:113 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Features"]
CHANGELOG.md:138 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Bug Fixes"]
CHANGELOG.md:145 error MD024/no-duplicate-heading Multiple headings with the same content [Context: "Chores"]
README.md:114 error MD040/fenced-code-language Fenced code blocks should have a language specified [Context: "```"]
See detailed reports in MegaLinter artifacts
Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)
- Documentation: Custom Flavors
- Command:
npx mega-linter-runner@9.4.0 --custom-flavor-setup --custom-flavor-linters ACTION_ACTIONLINT,CPP_CLANG_FORMAT,DOCKERFILE_HADOLINT,JSON_JSONLINT,JSON_PRETTIER,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_GIT_DIFF,REPOSITORY_GRYPE,REPOSITORY_LS_LINT,REPOSITORY_SECRETLINT,REPOSITORY_SYFT,REPOSITORY_TRIVY,REPOSITORY_TRIVY_SBOM,REPOSITORY_TRUFFLEHOG,SPELL_LYCHEE,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R

Show us your support by starring ⭐ the repository
There was a problem hiding this comment.
Pull request overview
This PR updates CMake presets and the GitHub Actions CI workflow to distinguish “synchronous” builds (as groundwork for adding asynchronous variants later) and consolidates CI builds into a devcontainer-based job.
Changes:
- Renames the
host-single-Debugpreset(s) tohost-single-Debug-synchronous. - Refactors CI to build both
HostandWindowstargets via a matrix devcontainer job. - Updates the host build/test job to parameterize presets by
type(currentlysynchronous) and expands OS coverage.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
CMakePresets.json |
Renames host single-config debug presets to include -synchronous and updates corresponding build/test preset references. |
.github/workflows/ci.yml |
Reworks CI jobs into a devcontainer build matrix and updates host build/test preset names and log upload path. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
This PR updates the CMake/CI setup to support adding asynchronous build/test variants by parameterizing preset selection and centralizing compiler-cache launcher configuration in CMake.
Changes:
- Move compiler cache launcher setup from CI/presets into
CMakeLists.txtviaRULE_LAUNCH_COMPILEwithccache/sccacheautodetection. - Rename the single-config Debug host preset to include a
-synchronoussuffix and update CI to usehost-single-Debug-${{ matrix.type }}. - Consolidate CI builds into a devcontainer job matrix for
HostandWindows, and fix the test-log artifact path.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
CMakePresets.json |
Removes per-preset compiler launcher cache vars and renames the host single-config Debug preset to -synchronous. |
CMakeLists.txt |
Adds auto-detection for ccache/sccache and sets RULE_LAUNCH_COMPILE globally. |
.github/workflows/static-analysis.yml |
Removes explicit -DCMAKE_*_COMPILER_LAUNCHER=ccache args and relies on CMake-side detection. |
.github/workflows/ci.yml |
Restructures jobs with matrices (target/type), removes explicit compiler-launcher args, and updates artifact paths. |
Comments suppressed due to low confidence (2)
.github/workflows/ci.yml:44
- The build cache key for
ccache-actionis currently just${{ github.job }}even though this job runs amatrix.targetfor Host vs Windows. That can cause cache pollution/evictions between different toolchains. Includematrix.target(and ideally relevant compiler/toolchain identifiers) in the cache key.
run: ./get-winsdk.sh
- uses: hendrikmuhs/ccache-action@1bbbcda0748b3e340dee71a314fa68ffcbd6df79 # v1.2.21
with:
key: ${{ github.job }}
.github/workflows/ci.yml:92
- The
ccache-actioncache key here is${{ github.job }}-${{ matrix.os }}. Since you’re introducing amatrix.typedimension (and presumably will add more values later), includematrix.typein the key to avoid sharing a cache between synchronous vs asynchronous builds when that matrix expands.
with:
persist-credentials: false
- uses: hendrikmuhs/ccache-action@1bbbcda0748b3e340dee71a314fa68ffcbd6df79 # v1.2.21
with:
key: ${{ github.job }}-${{ matrix.os }}
max-size: 2G
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
This PR updates the CMake/CI setup to support upcoming “synchronous vs asynchronous” CI variants by renaming presets, centralizing compiler-cache launcher selection in CMake, and simplifying workflow configuration.
Changes:
- Move compiler cache launcher configuration from presets/workflows into
CMakeLists.txt(auto-detectccache/sccache). - Rename the single-config debug preset to
host-single-Debug-synchronousand update workflow usage accordingly. - Refactor CI to use a matrix build in the devcontainer and remove per-job preset launcher args.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
CMakePresets.json |
Renames the host single-config Debug preset to include -synchronous and updates build/test presets to match. |
CMakeLists.txt |
Adds ccache/sccache detection and sets a global compile launcher property. |
.github/workflows/static-analysis.yml |
Removes preset launcher args now that caching is handled by CMake. |
.github/workflows/ci.yml |
Consolidates builds into a devcontainer matrix, updates preset names, and removes preset launcher args. |
Comments suppressed due to low confidence (1)
CMakePresets.json:39
- The preset is labeled as using a "Single Config Generator", but it doesn't set
generator(so it will fall back to the platform default, which can be multi-config on some runners). To make the preset behavior match its name/displayName and keep CI consistent across OSes, explicitly set a single-config generator (e.g., Ninja) here (or adjust the name/displayName if multi-config is acceptable).
"name": "host-single-Debug-synchronous",
"displayName": "Configuration for Host Tooling and Tests, Single Config Generator, Debug, synchronous",
"inherits": "defaults",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
There was a problem hiding this comment.
Pull request overview
This PR updates CMake configuration and GitHub Actions workflows to make CI configuration/preset selection extensible for upcoming “asynchronous” support, while centralizing compiler-cache launcher selection inside CMake.
Changes:
- Move compiler cache launcher selection (sccache/ccache) from CI/presets into
CMakeLists.txt. - Rename the
host-single-Debugpreset family tohost-single-Debug-synchronousand update CI to use a{type}suffix. - Simplify CI by consolidating devcontainer builds into a matrix job and removing per-job
configurePresetAdditionalArgs.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
CMakePresets.json |
Removes compiler launcher cache vars; renames host single-config debug preset to *-synchronous and updates build/test presets accordingly. |
CMakeLists.txt |
Adds standalone logic to auto-enable sccache/ccache via RULE_LAUNCH_COMPILE (and MSVC debug-info adjustment when using sccache). |
.github/workflows/static-analysis.yml |
Drops explicit compiler-launcher args now that caching is configured in CMake. |
.github/workflows/ci.yml |
Consolidates builds into a devcontainer matrix and updates host build/test to use the new synchronous preset naming. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:Embedded>") | ||
| cmake_policy(SET CMP0141 NEW) |
|
|
||
| set(CMAKE_POSITION_INDEPENDENT_CODE ON) | ||
|
|
||
| if (CCR_STANDALONE) | ||
| find_program(CCACHE_FOUND ccache) | ||
| find_program(SCCACHE_FOUND sccache) | ||
|
|
||
| if(SCCACHE_FOUND) | ||
| set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${SCCACHE_FOUND}") | ||
| message(STATUS "Using sccache for compilation") | ||
|
|
||
| if (MSVC) | ||
| set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:Embedded>") | ||
| cmake_policy(SET CMP0141 NEW) | ||
| endif() | ||
| elseif (CCACHE_FOUND) | ||
| set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE "${CCACHE_FOUND}") | ||
| message(STATUS "Using ccache for compilation") |
|



No description provided.