Skip to content

v0.14.0 — pinned vcpkg, shared clang-tidy and gcovr actions, builds sized by memory

Choose a tag to compare

@rhalbersma rhalbersma released this 20 Oct 08:05
· 15 commits to main since this release
2a7b357

The ladders resolve the same dependencies on every runner image, the clang-tidy and coverage gates run through actions a local run can share, and the heavy builds are sized by memory.

  • vcpkg at a pinned commit (#70, #71): a new vcpkg-setup action checks out microsoft/vcpkg at bf19794383e8, which serves Boost 1.92, and every leg that installs dependencies runs it first. Port versions no longer move when the runner image does.
  • A caller's vcpkg ports on the dependency installs' prefix path (#69): a dependency_repos entry that find_package()s a port of its own configures.
  • A clang-tidy action (#72, #73): clang-tidy.yml's four passes live in .github/actions/clang-tidy/clang-tidy.sh, which a local run can call. Every pass runs, and the header pass checks every header, so one round reports every finding.
  • A gcovr action (#74, #75): the coverage gate's exclusions live in .github/actions/gcovr/gcovr.sh, run with the same arguments as before. It takes an optional SEARCH_PATHS for a local build directory; CI leaves it empty.
  • A project's own _ASSERT macro is excluded from coverage (#65), as assert( is: an upper-case name ending in _ASSERT, at the start of the line.
  • GCC installs fail loudly (#67, #68): the PPA's update and install are retried until g++-N has an install candidate, the install names that exact version, and the step fails unless g++-N is on PATH. During a Launchpad brownout, apt-get install g++-15 had installed clang-15 and exited 0.
  • Builds sized by memory (#66, #76): sanitizers.yml, gcc.yml, clang.yml and clang-libc++.yml take build_memory_mib, 4096 by default, and run as many jobs as MemAvailable holds at that budget, between one and one per CPU. On a 16 GB hosted runner that is three, where three 5 GiB units had shut runners down mid-Build.

No input a caller passes changed, and none became required. A caller repins by moving its uses: lines to this commit:

uses: rhalbersma/cpp-ci/.github/workflows/<workflow>.yml@2a7b3577168d22d62a9119b1913c6e0122e78994 # v0.14.0

Full changes: #65 to #76.