Skip to content

C++ Internal

C++ Internal #367

Workflow file for this run

name: C++ Internal
on:
schedule:
- cron: 0 1 * * * # Nightly at 01:00 UTC
push:
branches:
- master
pull_request:
jobs:
linux_cmake:
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
config:
- runner: ubuntu-current
name: GCC Latest
toolchain: "./resolve_symlinks/toolchains/gcc-toolchain.cmake"
- runner: ubuntu-current
name: Clang Latest
toolchain: "./resolve_symlinks/toolchains/clang-toolchain.cmake"
- runner: ubuntu-current
name: Clang ASAN Latest
toolchain: "./resolve_symlinks/toolchains/clang-asan-toolchain.cmake"
- runner: ubuntu-current
name: Clang TSAN Latest
toolchain: "./resolve_symlinks/toolchains/clang-tsan-toolchain.cmake"
- runner: ubuntu-current
name: Clang UBSAN Latest
toolchain: "./resolve_symlinks/toolchains/clang-ubsan-toolchain.cmake"
- runner: ubuntu-old
name: GCC Oldest
toolchain: "./resolve_symlinks/toolchains/gcc-toolchain.cmake"
- runner: ubuntu-old
name: Clang Oldest
toolchain: "./resolve_symlinks/toolchains/clang-toolchain.cmake"
runs-on:
- self-hosted
- vm
- ${{ matrix.config.runner }}
name: ${{ matrix.config.name }}
steps:
# This is sometimes needed when running docker builds since these
# sometimes produce files with root ownership
- name: Ensure correct owner of repository
run: sudo chown -R actions-runner:actions-runner .
- name: Checkout source code
uses: actions/checkout@v3
- name: Waf Clean
run: python3 waf clean --no_resolve
- name: Waf Configure
run: python3 waf configure --git_protocol=git@ --cmake_toolchain=${{ matrix.config.toolchain }} --cmake_verbose
- name: Waf Build
run: python3 waf build --run_tests
valgrind:
timeout-minutes: 45
runs-on:
- self-hosted
- vm
- ubuntu-current
name: Valgrind
steps:
- name: Ensure correct owner of repository
run: sudo chown -R actions-runner:actions-runner .
- name: Checkout source code
uses: actions/checkout@v3
- name: Waf Clean
run: python3 waf clean --no_resolve
- name: Waf Configure
run: python3 waf configure --git_protocol=git@ --cmake_toolchain=./resolve_symlinks/toolchains/gcc-toolchain.cmake --cmake_verbose
- name: Waf Build
run: python3 waf build --run_tests --ctest_valgrind
zig_toolchain_build:
name: Zig Toolchain Build (Docker)
runs-on: [self-hosted, vm, ubuntu-current]
container:
image: ghcr.io/steinwurf/build-images/zig-cpp
options: >-
--user 0:0
--cap-add=NET_ADMIN
--device /dev/net/tun
volumes:
- /root/.ssh:/root/.ssh
steps:
- name: Checkout source code
uses: actions/checkout@v4
- name: Install dependencies
run: |
apk add --no-cache \
python3 \
py3-pip \
git \
cmake \
build-base
- name: Waf Clean
run: python3 waf clean --no_resolve
- name: Waf Configure with Zig Toolchain
run: python3 waf configure --git_protocol=git@ --cmake_toolchain=./resolve_symlinks/toolchains/zig-toolchain-x86_64-linux-musl.cmake --cmake_verbose
- name: Waf Build with Zig Toolchain
run: python3 waf build --run_tests
macos_cmake:
timeout-minutes: 45
strategy:
fail-fast: false
matrix:
config:
- arch: ARM64
os: big_sur
name: Apple Big Sur (ARM)
toolchain: "./resolve_symlinks/toolchains/clang-toolchain.cmake"
runs-on:
- self-hosted
- macOS
- ${{ matrix.config.os }}
- ${{ matrix.config.arch }}
- cmake
- builder
name: ${{ matrix.config.name }}
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Waf Clean
run: python3 waf clean --no_resolve
- name: Waf Configure
run: python3 waf configure --git_protocol=git@ --cmake_toolchain=${{ matrix.config.toolchain }} --cmake_verbose
- name: Waf Build
run: python3 waf build --run_tests
# No windows support for tunnel
# windows_cmake:
# timeout-minutes: 45
# strategy:
# fail-fast: false
# runs-on: [self-hosted, windows, vm, windows-current]
# name: Windows
# steps:
# - name: Checkout
# uses: actions/checkout@v3
# - name: Waf Clean
# run: python waf clean --no_resolve
# - name: Waf Configure
# run: python waf configure --git_protocol=git@ --cmake_verbose
# - name: Waf Build
# run: python waf build --run_tests
clang-format:
timeout-minutes: 45
name: Clang-Format
runs-on: [self-hosted, vm, ubuntu-current]
steps:
- name: Ensure correct owner of repository
run: sudo chown -R actions-runner:actions-runner .
- name: Clang format version
run: clang-format --version
- name: Checkout source code
uses: actions/checkout@v3
- name: Run Clang-format
run: find ./ -iname *.hpp -o -iname *.cpp -o -iname *.c -o -iname *.h | xargs clang-format --dry-run --Werror
workflow-keepalive:
if: github.event_name == 'schedule'
runs-on: [self-hosted, vm, ubuntu-current]
permissions:
actions: write
steps:
- name: Install GitHub CLI
run: |
sudo apt update
sudo apt install -y gh
- uses: liskin/gh-workflow-keepalive@v1
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: true