Skip to content

Commit 72ae9db

Browse files
committed
Finalize CI doc
1 parent 37e7de6 commit 72ae9db

1 file changed

Lines changed: 20 additions & 27 deletions

File tree

docs/ci.md

Lines changed: 20 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,8 @@
11
# Snap CI Guide
22

3-
This document explains the layered GitHub Actions pipeline introduced in
4-
`ci.yml`. It mirrors the staged approach LLVM describes in its
5-
[Testing Guide](https://llvm.org/docs/TestingGuide.html#llvm-testing-infrastructure-organization)
6-
and the [Developer Policy CI section](https://llvm.org/docs/DeveloperPolicy.html#working-with-the-ci-system):
7-
fast checks run first, progressively broader jobs follow, and failures in an
8-
earlier tier prevent unnecessary work in later tiers.
3+
This doc is the living map for `ci.yml`. The workflow borrows LLVM’s layered
4+
playbook—fast sanity checks get the first swing, broader test suites only run if
5+
earlier tiers stay green, and we bail out as soon as something obvious breaks.
96

107
## Workflow Overview
118

@@ -19,32 +16,28 @@ All downstream tiers declare `needs` on the earlier stage, so we bail out as soo
1916
as fast checks fail. Within each matrix we also set `fail-fast: true`, matching
2017
LLVM’s preference for halting broken builders quickly.
2118

22-
## Toolchain and Standard Coverage
19+
## Toolchain and Platform Coverage
2320

24-
The matrix intentionally mixes compilers, build types, and C++ standards:
21+
First-class platforms (blockers):
22+
- **Linux x64:** GCC 13 Debug (`-std=c++17`) plus Clang 18 Release (`-std=c++23`)
23+
- **Linux arm64:** native `ubuntu-24.04-arm` runner, Clang 18 Release (`-std=c++23`)
24+
- **macOS arm64 & Intel:** Apple Clang Release/Debug on `macos-15` + `macos-15-intel`
25+
- **Windows x64:** MSVC Debug (`-std=c++20`) and Release (`-std=c++23`)
2526

26-
- GCC 13 / Ninja Debug on Ubuntu with `-std=c++17`
27-
- Clang 18 / Ninja Release on Ubuntu with `-std=c++23`
28-
- Clang 18 + ASan Debug on Ubuntu with `-std=c++20`
29-
- Apple Clang on `macos-15-intel` (x86_64) and `macos-15` (arm64) covering C++17/C++20; these follow GitHub’s guidance for the post-`macos-13` runner retirement ([GitHub blog](https://github.blog/changelog/2025-09-19-github-actions-macos-13-runner-image-is-closing-down/)).
30-
- MSVC 17 (VS 2022) Debug C++20 and Release C++23
31-
- Cross-runs on armv7 (clang-16) and aarch64 (gcc-13) plus FreeBSD 14.2 smoke tests
27+
Second-class platforms (`continue-on-error: true`):
28+
- **FreeBSD 14.2:** [`vmactions/freebsd-vm`](https://github.com/vmactions/freebsd-vm) spins up the VM and handles pkg bootstrap for us
29+
- **Linux armv7:** `uraimo/run-on-arch-action` driving QEMU with GCC 12
30+
- **Windows arm64:** cross-compile Release on x64 runners until native hosts exist
3231

33-
Tier 2 jobs run only the labeled smoke tests to keep emulated hardware runs
34-
under one hour; Tier 1 always runs the entire unit suite with randomized order.
32+
Tier 2 smoke jobs run only labeled tests to keep runtime bounded.
3533

36-
## Maintenance Tips
34+
## Maintenance
3735

38-
- Add new host/architecture combos by extending the `matrix.include` blocks.
39-
- Prefer new `CMakePresets` entries over ad-hoc `cmake` command lines so that
40-
developers and CI stay aligned.
41-
- When touching `scripts/lint.sh` or `tests/CMakeLists.txt`, expect cache keys
42-
to invalidate (lint, smoke, and host caches intentionally hash those files).
43-
- Keep smoke tests focused and fast; Tier 0 relies on them to gate the pipeline.
44-
- The lint job is marked `continue-on-error` so failures surface in the UI but
45-
still allow Tier 1+ to run; fix lint ASAP but it won’t block other coverage.
46-
- If a platform becomes flaky, temporarily set `continue-on-error: true` for the
47-
offending matrix row but open an issue to track reverting that exception.
36+
- Extend the relevant `matrix.include` to add a host/toolchain.
37+
- Prefer CMake presets over inline commands.
38+
- Updating `.clang-tidy` / `.clang-format` reruns [`cpp-linter/cpp-linter-action`](https://github.com/cpp-linter/cpp-linter-action); only tool installs are cached.
39+
- Keep smoke suites minimal.
40+
- For flaky runners, temporarily set `continue-on-error: true` and track the follow-up.
4841

4942
## Future Extensions
5043

0 commit comments

Comments
 (0)