mirror of
https://github.com/sebastiandine/Card-Collection-Manager-3.git
synced 2026-08-28 23:01:09 +00:00
6f575f4cec
* patch: trigger release * fix: ci fix * fix: ci fix
3.3 KiB
3.3 KiB
AGENTS.md
GitHub Actions workflows for CI, release automation, and policy checks.
Scope
- This file governs edits in
.github/workflows/*.yml. - Keep one top-level triggered workflow per CI intent:
feature-ci.ymlfor non-masterpush CImaster-ci.ymlfor merged-PR-to-masterrelease CI
- Keep OS/platform splits in reusable workflows invoked via
workflow_call.
Current workflow map
feature-ci.yml-> orchestrator for feature branch CI.feature-linux.yml-> reusable Linux build/test/package workflow.feature-windows.yml-> reusable Windows build/test/package workflow.master-pr-title-guard.yml-> validates semantic-prefix policy for PRs targetingmaster.master-ci.yml-> orchestrator for merged PRs intomaster.master-windows.yml-> reusable Windows build/test/package workflow for master release flow.
CI invariants (do not break)
- Keep workflow intent stable:
- feature workflows produce branch+sha artifacts
- master workflows produce semver-tagged release artifacts
- Do not duplicate top-level triggers for the same intent (avoid split runs in Actions UI).
- Preserve artifact naming conventions unless docs are updated in the same change:
ccm3-linux-<version>.zipccm3-windows-<version>.zipccm3-windows-installer-<version>(feature) and.exe(master release asset)
- Preserve embedded app version wiring via
-DCCM_APP_VERSION=...in both feature and master build flows. - Keep
masterrelease flow gated to merged PRs only. - Keep PR title prefix policy aligned with
scripts/compute_master_semver.sh.
Editing rules
- Prefer minimal, surgical edits; avoid large workflow rewrites unless requested.
- Reusable workflows should declare explicit
workflow_callinputs for required context (e.g., version, merge SHA). - Sonar coverage steps that use
gcovrmust exclude third-party build trees at discovery time with--exclude-directories(for examplebuild/_deps) so gcov does not process dependency.gcdafiles. - For Linux Sonar coverage jobs, keep compiler and gcov toolchain aligned; because
cmake/Toolchain.cmakeprefers Clang by default, set-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++explicitly in the coverage configure step when using gcovr defaultgcov. - Keep
permissionsleast-privilege:- reusable build workflows:
contents: read - release/tag orchestrator:
contents: write
- reusable build workflows:
- Keep shells consistent with runner setup:
- Linux steps use standard bash-compatible shell.
- Windows MSYS2 jobs keep
shell: msys2 {0}and runmsys2/setup-msys2before MSYS2 commands.
Required follow-ups
- After changing workflow topology, update
docs/ci-cd-guide.md. - If artifact names or release behavior change, update
docs/ci-cd-guide.mdanddocs/versioning.mdif needed. - If semver prefix policy changes, update both
master-pr-title-guard.ymland docs. - If adding/removing workflow files, update this file's "Current workflow map".
Anti-patterns
- Do not add a second top-level feature or master trigger file.
- Do not move release creation into a reusable workflow that lacks
contents: write. - Do not introduce MSVC-specific build commands; project CI targets Clang/MinGW toolchains.
- Do not silently change artifact names; downstream release/download steps depend on exact names.