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/gcc16ghcr.io/mattkretz/cplusplus-ci/gcc17ghcr.io/mattkretz/cplusplus-ci/gccp0917
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.
The P0917 image is a patched GCC 17 with overloadable
operator?:.
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/clang22ghcr.io/mattkretz/cplusplus-ci/clang23
The Clang images provide clang, clang++, clang-tidy, and clang-format
aliases to the respective version.
name: Clang
on:
push:
branches: [ main ]
pull_request:
jobs:
clang:
strategy:
fail-fast: false
matrix:
version: [21, 22]
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, gcc16, and gcc17 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.