Skip to content

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.

Quickstart Workflow catalogue Source on GitHub

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-gate turns every job of a workflow into CI gate / gate.
  • C++ checks that agree with the compiler. ru-host-ci builds, runs ctest, then clang-tidy 18 and cppcheck over the same compile database.
  • The documentation platform. ru-mkdocs-publish builds a site with the shared theme in packages/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
  • Quickstart

    The smallest CI for a repository: one workflow, the gate, pinned to @v1.

  • Versioning

    Tags, the moving major, what counts as breaking, automatic patch releases.

  • Permissions contract

    What each workflow needs from its caller, and why a missing grant fails before any job runs.

  • Docs platform

    The theme package, the publish workflow, the migration tool and the style guide.

  • Workflow catalogue

    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.