Add more GCC & Clang versions to use in GitHub Actions workflows #832
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Ubuntu | |
on: | |
push: | |
branches: | |
- develop | |
- main | |
paths: | |
- .github/workflows/ubuntu.yml | |
- cmake/** | |
- include/** | |
- single_include/** | |
- test/** | |
- tool/** | |
- .clang-tidy | |
- CMakeLists.txt | |
- Makefile | |
pull_request: | |
paths: | |
- .github/workflows/ubuntu.yml | |
- cmake/** | |
- include/** | |
- single_include/** | |
- test/** | |
- tool/** | |
- .clang-tidy | |
- CMakeLists.txt | |
- Makefile | |
workflow_dispatch: | |
env: | |
JOBS: 3 | |
concurrency: | |
group: ${{github.workflow}}-${{github.ref}} | |
cancel-in-progress: true | |
jobs: | |
ubuntu-latest: | |
timeout-minutes: 10 | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
build_type: [ Debug, Release ] | |
use_single_header: ["ON", "OFF"] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Configure CMake | |
run: cmake -B ${{github.workspace}}/build_${{matrix.build_type}} -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DFK_YAML_BUILD_TEST=ON -DFK_YAML_USE_SINGLE_HEADER=${{matrix.use_single_header}} | |
- name: Build | |
run: cmake --build ${{github.workspace}}/build_${{matrix.build_type}} --config ${{matrix.build_type}} -j ${{env.JOBS}} | |
- name: Test | |
working-directory: ${{github.workspace}}/build_${{matrix.build_type}} | |
run: ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} | |
ci_test_clang_tidy: | |
timeout-minutes: 10 | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Run Clang-Tidy | |
run: make clang-tidy | |
ci_test_iwyu: | |
timeout-minutes: 10 | |
runs-on: ubuntu-24.04 | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install include-what-you-use | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y iwyu | |
include-what-you-use --version | |
- name: Run include-what-you-use | |
run: make iwyu | |
ci_test_valgrind: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Valgrind | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y valgrind | |
valgrind --version | |
- name: Run Valgrind | |
run: make valgrind | |
ci_test_clang_sanitizers: | |
runs-on: ubuntu-latest | |
container: silkeh/clang:latest | |
timeout-minutes: 10 | |
steps: | |
- name: Install git and unzip | |
run: | | |
apt-get update | |
apt-get install -y git unzip | |
git --version | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Get latest CMake | |
uses: lukka/get-cmake@latest | |
- name: Run Clang Sanitizers | |
run: make clang-sanitizers | |
ci_test_clang_cxx_standards: | |
runs-on: ubuntu-latest | |
container: silkeh/clang:latest | |
strategy: | |
matrix: | |
cxx_standard: [ "11", "14", "17", "20", "23" ] | |
build_type: [ Debug, Release ] | |
steps: | |
- name: Install git and unzip | |
run: | | |
apt-get update | |
apt-get install -y git unzip | |
git --version | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Get latest CMake | |
uses: lukka/get-cmake@latest | |
- name: Install package for test | |
run: | | |
cmake -B ${{github.workspace}}/build_for_package | |
cmake --build ${{github.workspace}}/build_for_package --target install | |
rm -rf ${{github.workspace}}/build_for_package | |
- name: Configure CMake | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DFK_YAML_BUILD_ALL_TEST=ON -DFK_YAML_TEST_TARGET_CXX_STANDARD=${{matrix.cxx_standard}} | |
- name: Build & Test | |
run: | | |
cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j ${{env.JOBS}} | |
cd ${{github.workspace}}/build | |
ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} | |
ci_test_gcc_cxx_standards: | |
runs-on: ubuntu-latest | |
container: gcc:latest | |
strategy: | |
matrix: | |
cxx_standard: [ "11", "14", "17", "20", "23" ] | |
build_type: [ Debug, Release ] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Get latest CMake | |
uses: lukka/get-cmake@latest | |
- name: Install package for test | |
run: | | |
cmake -B ${{github.workspace}}/build_for_package | |
cmake --build ${{github.workspace}}/build_for_package --target install | |
rm -rf ${{github.workspace}}/build_for_package | |
- name: Configure CMake and Ninja | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DFK_YAML_BUILD_ALL_TEST=ON -DFK_YAML_TEST_TARGET_CXX_STANDARD=${{matrix.cxx_standard}} | |
- name: Build & Test | |
run: | | |
cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j ${{env.JOBS}} | |
cd ${{github.workspace}}/build | |
ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} | |
ci_test_clang_versions: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
compiler: [ "3.4", "3.5", "3.6", "3.7", "3.8", "3.9", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19" ] | |
build_type: [ Debug, Release ] | |
container: silkeh/clang:${{matrix.compiler}} | |
steps: | |
- name: Install git and unzip | |
run: | | |
apt-get update | |
apt-get install -y git unzip | |
git --version | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Get latest CMake and Ninja | |
uses: lukka/get-cmake@latest | |
- name: Install package for test | |
run: | | |
cmake -B ${{github.workspace}}/build_for_package | |
cmake --build ${{github.workspace}}/build_for_package --target install | |
rm -rf ${{github.workspace}}/build_for_package | |
- name: Configure CMake | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DFK_YAML_BUILD_ALL_TEST=ON | |
- name: Build & Test | |
run: | | |
cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j ${{env.JOBS}} | |
cd ${{github.workspace}}/build | |
ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} | |
ci_test_gcc_versions: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
compiler: [ "7", "8", "9", "10", "11", "12", "13", "14", latest ] | |
build_type: [ Debug, Release ] | |
container: gcc:${{matrix.compiler}} | |
steps: | |
- name: Install git and unzip | |
run: | | |
apt-get update | |
apt-get install -y git unzip | |
git --version | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Get latest CMake and Ninja | |
uses: lukka/get-cmake@latest | |
- name: Install package for test | |
run: | | |
cmake -B ${{github.workspace}}/build_for_package | |
cmake --build ${{github.workspace}}/build_for_package --target install | |
rm -rf ${{github.workspace}}/build_for_package | |
- name: Configure CMake | |
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DFK_YAML_BUILD_ALL_TEST=ON | |
- name: Build & Test | |
run: | | |
cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j ${{env.JOBS}} | |
cd ${{github.workspace}}/build | |
ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} | |
ci_test_older_gcc_versions: | |
runs-on: ubuntu-22.04 | |
strategy: | |
fail-fast: false | |
matrix: | |
build_type: [ Debug, Release ] | |
gcc_ver: [ '4.8', '5', '6' ] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: add repository commonly needed to install GCC | |
run: | | |
sudo apt-get update | |
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test | |
sudo apt-get update | |
- name: add repository for GCC 4.8 or 5 | |
run: | | |
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 | |
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 | |
sudo apt-get update | |
# for g++-4.8, g++-5 | |
sudo apt-add-repository 'deb http://archive.ubuntu.com/ubuntu/ xenial main' | |
sudo apt-add-repository 'deb http://archive.ubuntu.com/ubuntu/ xenial universe' | |
sudo apt-get update | |
if: ${{ matrix.gcc_ver == '4.8' || matrix.gcc_ver == '5' }} | |
- name: add repository for GCC 6 | |
run: | | |
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5 | |
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 3B4FE6ACC0B21F32 | |
sudo apt-get update | |
# for g++-6 | |
sudo apt-add-repository 'deb http://archive.ubuntu.com/ubuntu/ bionic main' | |
sudo apt-add-repository 'deb http://archive.ubuntu.com/ubuntu/ bionic universe' | |
sudo apt-get update | |
if: ${{ matrix.gcc_ver == '6' }} | |
- name: install GCC | |
run: sudo apt-get install --no-install-recommends -y g++-${{matrix.gcc_ver}} | |
- name: Configure CMake | |
run: CXX=g++-${{matrix.gcc_ver}} cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DFK_YAML_BUILD_TEST=ON | |
- name: Build & Test | |
run: | | |
cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j ${{env.JOBS}} | |
cd ${{github.workspace}}/build | |
ctest -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} | |
ci_test_icpx: | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
build_type: [ Debug, Release ] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Intel oneAPI Base Toolkit | |
run: | # from the official document: https://www.intel.com/content/www/us/en/docs/oneapi/installation-guide-linux/2024-1/apt.html | |
wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list | |
sudo apt-get update | |
sudo apt-get install -y intel-basekit | |
- name: Configure CMake | |
run: | | |
source /opt/intel/oneapi/setvars.sh | |
cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{matrix.build_type}} -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DFK_YAML_BUILD_TEST=ON | |
- name: Build | |
run: cmake --build ${{github.workspace}}/build --config ${{matrix.build_type}} -j ${{env.JOBS}} | |
- name: Test | |
run: ctest --test-dir ${{github.workspace}}/build -C ${{matrix.build_type}} --output-on-failure -j ${{env.JOBS}} |