HardFOC CI and documentation platform
General CI Tools¶
Reusable GitHub Actions workflows that every HardFOC repository calls: C/C++ lint and analysis, host builds and
tests, the documentation platform, link and lint checks, releases, and one required CI gate. Callers pin
@v1 and get fixes without breaking changes.
A repository keeps a few short caller workflows; the jobs, the pinned tools and the checks live here. Every
third-party action is pinned to a commit SHA, so @v1 pins everything a caller runs.
What you get¶
- One required check.
ru-ci-gateturns every job of a workflow intoCI gate / gate. - C++ checks that agree with the compiler.
ru-host-cibuilds, runs ctest, then clang-tidy 18 and cppcheck over the same compile database. - The documentation platform.
ru-mkdocs-publishbuilds a site with the shared theme inpackages/hardfoc-mkdocs-theme, checks it, audits it and publishes it, versioned or not (platform guide). - Releases without breaking callers. Semver tags, a moving
v1, an automatic patch release on every merge, and a check that stops a breaking change from landing without a major (Versioning). - A permissions contract. Each workflow asks for the least it needs, per job, and the self-CI holds it to the documented table.
Workflows¶
| Workflow | Purpose | Permissions |
|---|---|---|
ru-ci-gate.yml |
One required status check per repository: it passes only when every other CI job passed. | contents: read |
ru-cpp-analysis.yml |
Run cppcheck over source folders, without a build, and keep the report as an artifact. | contents: read |
ru-cpp-lint.yml |
Check C and C++ formatting with clang-format and lint with clang-tidy, with results as annotations on the pull request. | contents: read, pull-requests: write |
ru-docs-linkcheck.yml |
Check every link in a repository's Markdown, external ones included, with lychee. | contents: read |
ru-docs-publish.yml |
Build a Jekyll site with Doxygen and publish it to gh-pages in version folders: the documentation pipeline that ru-mkdocs-publish replaces. |
contents: write |
ru-host-ci.yml |
Build, test and analyse a CMake project on the host, with clang-tidy 18 and cppcheck over the compiler's own compile database. | contents: read |
ru-markdown-lint.yml |
Lint Markdown with markdownlint-cli2 against the repository's own rules. | contents: read |
ru-mkdocs-publish.yml |
Build, check, audit and publish a HardFOC documentation site with the shared theme, versioned or not. | contents: write |
ru-release.yml |
Create a GitHub Release with generated notes for a tag. | contents: write |
ru-yaml-lint.yml |
Lint YAML files with yamllint against the repository's own rules. | contents: read |
-
The smallest CI for a repository: one workflow, the gate, pinned to
@v1. -
Tags, the moving major, what counts as breaking, automatic patch releases.
-
What each workflow needs from its caller, and why a missing grant fails before any job runs.
-
The theme package, the publish workflow, the migration tool and the style guide.
-
One page per workflow: what it does, jobs, permissions, inputs and failure modes.
-
How this repository tests itself
Self-CI, contract checks and the fixtures every change runs against.