C++ Internal #376
This file contains hidden or 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: 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: | |
| - name: Ensure correct owner of repository | |
| run: sudo chown -R actions-runner:actions-runner . | |
| - name: Checkout source code | |
| uses: actions/checkout@v3 | |
| - name: Waf Configure | |
| run: python3 waf configure --git_protocol=git@ --cmake_toolchain=${{ matrix.config.toolchain }} --cmake_verbose | |
| - name: Waf Build | |
| run: python3 waf build | |
| - name: Waf Run Tests | |
| run: python3 waf --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 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 | |
| - name: Waf Run Tests | |
| run: python3 waf --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 | |
| steps: | |
| - name: Checkout source code | |
| uses: actions/checkout@v4 | |
| with: | |
| persist-credentials: false | |
| - name: Configure Github Authentication | |
| run: | | |
| git config --global credential.helper 'store' | |
| git credential approve <<EOF | |
| protocol=https | |
| host=github.com | |
| username=x-access-token | |
| password=${{ secrets.GH_ACCESS_TOKEN }} | |
| EOF | |
| - name: Waf Configure with Zig Toolchain | |
| run: python3 waf configure --git_protocol=https:// --cmake_toolchain=./resolve_symlinks/toolchains/zig-toolchain-x86_64-linux-musl.cmake --cmake_verbose | |
| - name: Waf Build with Zig Toolchain | |
| run: python3 waf build | |
| - name: Waf Run Tests | |
| run: python3 waf --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 Configure | |
| run: python3 waf configure --git_protocol=git@ --cmake_toolchain=${{ matrix.config.toolchain }} --cmake_verbose | |
| - name: Waf Build | |
| run: python3 waf build | |
| - name: Waf Run Tests | |
| run: python3 waf --run_tests | |
| 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 Configure | |
| run: python waf configure --git_protocol=git@ --cmake_verbose | |
| - name: Waf Build | |
| run: python waf build | |
| - name: Waf Run Tests | |
| run: python waf --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 |