ci: prepare CI for asynchronous support#311
Conversation
✅
|
| Descriptor | Linter | Files | Fixed | Errors | Warnings | Elapsed time |
|---|---|---|---|---|---|---|
| ✅ ACTION | actionlint | 6 | 0 | 0 | 0.03s | |
| ✅ CPP | clang-format | 229 | 0 | 0 | 0 | 1.93s |
| ✅ DOCKERFILE | hadolint | 1 | 0 | 0 | 0.03s | |
| markdownlint | 7 | 4 | 17 | 0 | 1.24s | |
| ✅ MARKDOWN | markdown-table-formatter | 7 | 4 | 0 | 0 | 0.33s |
| ✅ REPOSITORY | git_diff | yes | no | no | 0.02s | |
| ✅ REPOSITORY | grype | yes | no | no | 33.0s | |
| ✅ REPOSITORY | ls-lint | yes | no | no | 0.11s | |
| ✅ REPOSITORY | secretlint | yes | no | no | 4.7s | |
| ✅ REPOSITORY | syft | yes | no | no | 1.92s | |
| ✅ REPOSITORY | trivy | yes | no | no | 11.45s | |
| ✅ REPOSITORY | trivy-sbom | yes | no | no | 0.21s | |
| ✅ REPOSITORY | trufflehog | yes | no | no | 4.89s | |
| lychee | 84 | 1 | 0 | 21.26s | ||
| ✅ YAML | prettier | 10 | 0 | 0 | 0 | 0.86s |
| ✅ YAML | v8r | 10 | 0 | 0 | 8.2s | |
| ✅ YAML | yamllint | 10 | 0 | 0 | 0.59s |
Detailed Issues
⚠️ SPELL / lychee - 1 error
[404] https://github.com/yourname/amp-cucumber-cpp-runner.git | Network error: Not Found
📝 Summary
---------------------
🔍 Total..........158
✅ Successful.....157
⏳ 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 - 17 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"]
cmake/WindowsToolchainFilesProvidedBy.md:1 error MD041/first-line-heading/first-line-h1 First line in a file should be a top-level heading [Context: "<https://github.com/MarkSchofi..."]
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,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.
There was a problem hiding this comment.
Pull request overview
This PR updates the CMake preset structure and GitHub Actions workflows to introduce explicit synchronous build/test presets (as groundwork for future asynchronous support), while also adding new Windows/MSVC toolchain helper modules and shifting ccache launcher configuration into CMake.
Changes:
- Add new CMake presets + workflow presets for
*-Debug-synchronousacross ubuntu/windows/macos. - Add MSVC/VS discovery helper CMake modules (VSWhere/WSL) and a new
Windows.MSVC.toolchain.cmake. - Simplify CI/static-analysis workflows by relying on in-project ccache detection instead of passing launcher args via workflows.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
cmake/WindowsToolchainFilesProvidedBy.md |
Adds attribution link for the toolchain source. |
cmake/Windows.MSVC.toolchain.cmake |
Introduces an MSVC toolchain for non-VS generators; configures VS toolset, libraries, and predefines. |
cmake/WSL.cmake |
Adds helper functions for WSL registry reads and Windows path conversion. |
cmake/VSWhere.cmake |
Adds vswhere-based VS discovery + validation helper used by the MSVC toolchain. |
CMakePresets.json |
Adds synchronous presets/workflows and removes default ccache launcher cache variables. |
CMakeLists.txt |
Adds standalone-only auto-detection and enablement of ccache as compiler launcher. |
.github/workflows/static-analysis.yml |
Removes explicit CMAKE_*_COMPILER_LAUNCHER args; relies on CMakeLists behavior. |
.github/workflows/ci.yml |
Refactors CI jobs (devcontainer matrix + workflowPreset-based host build/test); adjusts artifact paths. |
💡 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 project’s CMake presets and GitHub Actions workflows to support a new “synchronous” configuration set and introduces a native Windows MSVC (non–Visual Studio generator) toolchain to broaden CI/build support.
Changes:
- Added CMake toolchain modules for locating/configuring MSVC + Windows SDK tooling (incl. VSWhere + Windows Kits helpers).
- Reworked
CMakePresets.jsonto add OS-specific*-Debug-synchronousconfigure/build/test/workflow presets. - Updated CI/static-analysis workflows to use presets/workflow presets and moved compiler launcher selection (ccache) into
CMakeLists.txt.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
cmake/WindowsToolchainFilesProvidedBy.md |
Adds provenance link for the imported Windows toolchain logic. |
cmake/Windows.MSVC.toolchain.cmake |
New MSVC toolchain for Ninja/non-VS-generator builds on Windows. |
cmake/Windows.Kits.cmake |
New Windows SDK discovery/config for toolchain usage (and WSL support). |
cmake/WSL.cmake |
Adds helper functions for reading Windows registry/converting paths under WSL. |
cmake/VSWhere.cmake |
Adds VS discovery via vswhere plus helper validation utilities. |
CMakePresets.json |
Introduces *-Debug-synchronous presets and workflow presets; removes launcher settings from defaults. |
CMakeLists.txt |
Auto-enables ccache launcher when building standalone. |
.github/workflows/static-analysis.yml |
Removes explicit launcher args; relies on CMakeLists.txt ccache detection. |
.github/workflows/ci.yml |
Refactors CI jobs (matrix + workflow presets), adds devcontainer matrix build, adjusts cache usage. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…Make presets for sccache support
There was a problem hiding this comment.
Pull request overview
This PR updates the CMake/CI configuration to support a “synchronous” build/test preset workflow across platforms, including adding a native MSVC (non–Visual Studio generator) toolchain and restructuring CI jobs to use CMake workflow presets.
Changes:
- Added Windows/MSVC toolchain support (VS discovery, Windows SDK selection, and WSL helpers).
- Extended
CMakePresets.jsonwith synchronous configure/build/test + workflow presets for ubuntu/windows/macos. - Updated GitHub Actions workflows to rely on presets/workflow presets and removed explicit compiler-launcher configure args; added launcher auto-detection in
CMakeLists.txt.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 13 comments.
Show a summary per file
| File | Description |
|---|---|
cmake/WindowsToolchainFilesProvidedBy.md |
Adds attribution link for the toolchain source. |
cmake/Windows.MSVC.toolchain.cmake |
New MSVC toolchain for Ninja/non-VS generators (VS + toolset discovery, program path setup). |
cmake/Windows.Kits.cmake |
New Windows SDK discovery/config (incl. FASTBuild env override handling). |
cmake/WSL.cmake |
New helpers for registry reads and Windows→WSL path conversion. |
cmake/VSWhere.cmake |
New VS discovery wrapper around vswhere plus validation helper. |
CMakePresets.json |
Introduces synchronous presets + workflow presets and adjusts launcher defaults. |
CMakeLists.txt |
Adds standalone auto-detection for sccache (MSVC) / ccache (others). |
.github/workflows/static-analysis.yml |
Removes explicit preset args for compiler launchers. |
.github/workflows/ci.yml |
Restructures CI jobs and switches host build/test to workflowPreset. |
💡 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 project’s CMake presets and GitHub Actions workflows to support new “synchronous” build/test workflows across OSes, and introduces Windows MSVC toolchain support (including VS/Windows SDK discovery helpers) to enable those CI paths.
Changes:
- Add Windows MSVC toolchain + helper CMake modules to locate Visual Studio / Windows SDK (including WSL support).
- Restructure
CMakePresets.jsonto add OS-specific*-Debug-synchronousconfigure/build/test/workflow presets. - Update CI workflows to use workflow presets and remove explicit compiler launcher args (moving launcher selection into CMake).
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
cmake/WindowsToolchainFilesProvidedBy.md |
Records source/reference for the Windows toolchain files. |
cmake/Windows.MSVC.toolchain.cmake |
Adds a Ninja/non-VS-generator MSVC toolchain setup for Windows. |
cmake/Windows.Kits.cmake |
Adds Windows SDK discovery and kit paths/tool setup. |
cmake/WSL.cmake |
Adds WSL helpers for registry reads and path conversion. |
cmake/VSWhere.cmake |
Adds vswhere-based Visual Studio discovery and VS file validation. |
CMakePresets.json |
Adds synchronous OS workflow presets and adjusts preset layout for CI. |
CMakeLists.txt |
Adds compiler launcher auto-detection logic (ccache/sccache). |
.mega-linter.yml |
Disables JSON linting in mega-linter config. |
.github/workflows/static-analysis.yml |
Removes explicit launcher args; relies on CMake launcher auto-detection. |
.github/workflows/ci.yml |
Reworks CI into matrix-based devcontainer builds and OS workflowPreset-based build/test. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…debugging support
…the default compiler launcher in CMake presets
There was a problem hiding this comment.
Pull request overview
This PR refactors CI/CMake preset wiring to introduce “synchronous” build/test workflows (as groundwork for future async support) and adds Windows MSVC toolchain support via new CMake toolchain/modules.
Changes:
- Introduces OS-specific
*-Debug-synchronousconfigure/build/test/workflow presets and updates CI to use workflow presets. - Adds new Windows-related CMake modules: VS discovery (vswhere), Windows SDK (Kits) resolution, and WSL registry/path helpers, plus an MSVC Ninja toolchain file.
- Updates CI/static-analysis workflows and MegaLinter configuration accordingly.
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 15 comments.
Show a summary per file
| File | Description |
|---|---|
cmake/WindowsToolchainFilesProvidedBy.md |
Adds attribution/source link for the toolchain files. |
cmake/Windows.MSVC.toolchain.cmake |
New MSVC (non-VS generator) toolchain setup for Ninja builds. |
cmake/Windows.Kits.cmake |
New Windows SDK discovery/configuration helper. |
cmake/WSL.cmake |
Adds WSL helpers for registry reads and path conversion. |
cmake/VSWhere.cmake |
Adds vswhere-based VS discovery and validation helpers. |
CMakePresets.json |
Adds synchronous presets + workflow presets and updates generators for single-config usage. |
.mega-linter.yml |
Adjusts enabled linters (notably removing JSON from ENABLE). |
.github/workflows/static-analysis.yml |
Removes explicit launcher args and relies more on presets. |
.github/workflows/ci.yml |
Refactors CI jobs (devcontainer build matrix + workflowPreset-based host build/test). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
There was a problem hiding this comment.
Pull request overview
Prepares CI and CMake presets/toolchains to support a “synchronous” build/test workflow across Ubuntu, Windows, and macOS, including adding a native MSVC (non–Visual Studio generator) toolchain for Windows runners.
Changes:
- Add MSVC-oriented CMake toolchain + helpers (VSWhere/Windows SDK/WSL registry helpers) under
cmake/. - Expand
CMakePresets.jsonwith*-Debug-synchronousconfigure/build/test/workflow presets and update CI to use workflow presets. - Simplify CI/static-analysis preset arguments by relying on preset-defined compiler launchers (ccache).
Reviewed changes
Copilot reviewed 9 out of 9 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| cmake/WindowsToolchainFilesProvidedBy.md | Adds attribution/source link for the Windows toolchain files. |
| cmake/Windows.MSVC.toolchain.cmake | New MSVC toolchain file to drive Ninja-based builds using Visual Studio toolsets/SDK. |
| cmake/Windows.Kits.cmake | New helper to locate/configure Windows SDK paths/tools and add include/link directories. |
| cmake/WSL.cmake | New helper functions for WSL registry reads and path conversion. |
| cmake/VSWhere.cmake | New helper to locate Visual Studio instances via vswhere and validate VS file presence. |
| CMakePresets.json | Introduces synchronous presets + workflow presets; sets default ccache launcher via defaults. |
| .mega-linter.yml | Disables JSON in enabled linters list. |
| .github/workflows/static-analysis.yml | Removes explicit preset args for compiler launchers (now provided by presets). |
| .github/workflows/ci.yml | Refactors CI into devcontainer build matrix + OS workflow-preset-based build/test matrix. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.



No description provided.