This repository provides Docker images optimized for use in GitHub Actions CI workflows targeting C++ projects.
All images are built on top of a common Ubuntu 24.04 base with several useful packages installed via APT:
binutilsbisoncmakeconan(installed viapipx)flexgitmakeninjapkgconf
ghcr.io/mattkretz/cplusplus-ci/gcc9ghcr.io/mattkretz/cplusplus-ci/gcc10ghcr.io/mattkretz/cplusplus-ci/gcc11ghcr.io/mattkretz/cplusplus-ci/gcc12ghcr.io/mattkretz/cplusplus-ci/gcc13ghcr.io/mattkretz/cplusplus-ci/gcc14ghcr.io/mattkretz/cplusplus-ci/gcc15ghcr.io/mattkretz/cplusplus-ci/gcc16
The GCC images provide gcc and g++ aliases to the respective version. GCC
is always installed with multilib support, i.e. -m32, -mx32, and -m64 are
supported.
ghcr.io/mattkretz/cplusplus-ci/clang14ghcr.io/mattkretz/cplusplus-ci/clang15ghcr.io/mattkretz/cplusplus-ci/clang16ghcr.io/mattkretz/cplusplus-ci/clang17ghcr.io/mattkretz/cplusplus-ci/clang18ghcr.io/mattkretz/cplusplus-ci/clang19ghcr.io/mattkretz/cplusplus-ci/clang20ghcr.io/mattkretz/cplusplus-ci/clang21ghcr.io/mattkretz/cplusplus-ci/clang22
The Clang images provide clang, clang++, clang-tidy, and clang-format
aliases to the respective version.
The
ghcr.io/mattkretz/cplusplus-ci/base and
ghcr.io/mattkretz/cplusplus-ci/latest images are deprecated and will not be
updated anymore.
name: Clang
on:
push:
branches: [ main ]
pull_request:
jobs:
clang:
strategy:
fail-fast: false
matrix:
version: [20, 21]
runs-on: ubuntu-latest
container:
image: ghcr.io/mattkretz/cplusplus-ci/clang${{ matrix.version }}
steps:
- uses: actions/checkout@v4
- name: Run test suite
env:
CXX: clang++
run: make checkIf you want to use latest CMake add the following step to your workflow before
a step that needs cmake:
- name: Set PATH for cmake-latest
run: echo /opt/cmake-latest/bin >> $GITHUB_PATHThe gcc15 and gcc16 images are updated once per week. All other images are
updated once per month. There may also be manual updates whenever the feature
set needs to change.