Skip to content

ci: prepare CI for asynchronous support#311

Open
Daan Timmer (daantimmer) wants to merge 10 commits intomainfrom
feature/prepare-ci-jobs-for-synchronous-and-asynchronous-support
Open

ci: prepare CI for asynchronous support#311
Daan Timmer (daantimmer) wants to merge 10 commits intomainfrom
feature/prepare-ci-jobs-for-synchronous-and-asynchronous-support

Conversation

@daantimmer
Copy link
Collaborator

No description provided.

Copilot AI review requested due to automatic review settings March 18, 2026 09:15
@github-actions
Copy link

github-actions bot commented Mar 18, 2026

⚠️MegaLinter analysis: Success with warnings

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
⚠️ MARKDOWN 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
⚠️ SPELL 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

MegaLinter is graciously provided by OX Security
Show us your support by starring ⭐ the repository

@github-actions
Copy link

github-actions bot commented Mar 18, 2026

Test Results

27 tests  ±0   27 ✅ ±0   28s ⏱️ ±0s
 1 suites ±0    0 💤 ±0 
 1 files   ±0    0 ❌ ±0 

Results for commit b6e7ba7. ± Comparison against base commit 379a56b.

♻️ This comment has been updated with latest results.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-Debug preset(s) to host-single-Debug-synchronous.
  • Refactors CI to build both Host and Windows targets via a matrix devcontainer job.
  • Updates the host build/test job to parameterize presets by type (currently synchronous) 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.

Copilot AI review requested due to automatic review settings March 18, 2026 10:06
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.txt via RULE_LAUNCH_COMPILE with ccache/sccache autodetection.
  • Rename the single-config Debug host preset to include a -synchronous suffix and update CI to use host-single-Debug-${{ matrix.type }}.
  • Consolidate CI builds into a devcontainer job matrix for Host and Windows, 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-action is currently just ${{ github.job }} even though this job runs a matrix.target for Host vs Windows. That can cause cache pollution/evictions between different toolchains. Include matrix.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-action cache key here is ${{ github.job }}-${{ matrix.os }}. Since you’re introducing a matrix.type dimension (and presumably will add more values later), include matrix.type in 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>
Copilot AI review requested due to automatic review settings March 18, 2026 10:12
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-detect ccache/sccache).
  • Rename the single-config debug preset to host-single-Debug-synchronous and 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.

Copilot AI review requested due to automatic review settings March 18, 2026 13:21
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-Debug preset family to host-single-Debug-synchronous and 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.

Comment on lines +37 to +38
set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$<CONFIG:Debug,RelWithDebInfo>:Embedded>")
cmake_policy(SET CMP0141 NEW)
Comment on lines 25 to +42

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")
@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants