updated runners

multiple different build types added for different configurations, now making full use of the matrix properly so we can have an early warning of different compile setups and errors that may occur
This commit is contained in:
marauder2k7 2026-06-16 21:14:21 +01:00
parent ae283af384
commit 222f476f0e
3 changed files with 222 additions and 130 deletions

View file

@ -4,17 +4,13 @@ on:
branches: [development] branches: [development]
pull_request: pull_request:
branches: [development] branches: [development]
env:
build_type: "Release"
cc: "gcc"
cxx: "g++"
concurrency: concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-linux group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-linux
cancel-in-progress: true cancel-in-progress: true
permissions: permissions:
checks: write checks: write
jobs: jobs:
build-linux: build-linux:
@ -24,21 +20,48 @@ jobs:
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
config: config:
- { # Explicit older GCC versions catch deprecation warnings before
name: "Ubuntu Latest GCC", # they become the runner default and break the build silently.
build_type: "Release", - {
cc: "gcc", name: "Ubuntu GCC 12",
cxx: "g++", build_type: "Release",
generator: "Ninja" cc: "gcc-12",
} cxx: "g++-12",
generator: "Ninja",
}
- {
name: "Ubuntu GCC 13",
build_type: "Release",
cc: "gcc-13",
cxx: "g++-13",
generator: "Ninja",
}
- {
name: "Ubuntu GCC Latest",
build_type: "Release",
cc: "gcc",
cxx: "g++",
generator: "Ninja",
}
# Clang produces a meaningfully different set of warnings and
# errors than GCC — builds that pass one often have real issues
# on the other.
- {
name: "Ubuntu Clang",
build_type: "Release",
cc: "clang",
cxx: "clang++",
generator: "Ninja",
}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Print env - name: Print env
run: | run: |
echo github.event.action: ${{ github.event.action }} echo github.event.action: ${{ github.event.action }}
echo github.event_name: ${{ github.event_name }} echo github.event_name: ${{ github.event_name }}
- name: Run GIT Init - name: Run GIT Init
run: git init run: git init
@ -48,62 +71,63 @@ jobs:
- name: Install Linux Dependencies - name: Install Linux Dependencies
run: | run: |
sudo apt-get install ninja-build sudo apt-get update && \
ninja --version sudo apt-get install -y \
cmake --version ninja-build \
gcc --version build-essential \
sudo apt-get update && \ nasm \
sudo apt-get install -y \ python3 \
build-essential \ python3-pip \
nasm \ gcc-12 g++-12 \
libogg-dev \ gcc-13 g++-13 \
libxft-dev \ clang \
libx11-dev \ libogg-dev \
libxxf86vm-dev \ libxft-dev \
libopenal-dev \ libx11-dev \
libasound2-dev \ libxxf86vm-dev \
libpipewire-0.3-dev \ libopenal-dev \
portaudio19-dev \ libasound2-dev \
oss4-dev \ libpipewire-0.3-dev \
libjack-dev \ portaudio19-dev \
libpulse-dev \ oss4-dev \
libdbus-1-dev \ libjack-dev \
libfreetype6-dev \ libpulse-dev \
libxcursor-dev \ libdbus-1-dev \
libxinerama-dev \ libfreetype6-dev \
libxi-dev \ libxcursor-dev \
libxrandr-dev \ libxinerama-dev \
libxss-dev \ libxi-dev \
libglu1-mesa-dev \ libxrandr-dev \
libgtk-3-dev libxss-dev \
libglu1-mesa-dev \
sudo apt-get install -y \ libgtk-3-dev
python3 ninja --version
cmake --version
pip install jinja2 ${{matrix.config.cc}} --version
python3 -m pip install --break-system-packages jinja2
- name: Configure, Build & Install - name: Configure, Build & Install
uses: threeal/cmake-action@v1.3.0 uses: threeal/cmake-action@v1.3.0
with: with:
source-dir: ${{github.workspace}} source-dir: ${{github.workspace}}
build-dir: ${{github.workspace}}/build build-dir: ${{github.workspace}}/build
c-compiler: ${{matrix.config.cc}} c-compiler: ${{matrix.config.cc}}
cxx-compiler: ${{matrix.config.cxx}} cxx-compiler: ${{matrix.config.cxx}}
generator: ${{matrix.config.generator}} generator: ${{matrix.config.generator}}
options: CMAKE_BUILD_TYPE=${{matrix.config.build_type}} TORQUE_APP_NAME=Torque3D TORQUE_TESTING=ON options: CMAKE_BUILD_TYPE=${{matrix.config.build_type}} TORQUE_APP_NAME=Torque3D TORQUE_TESTING=ON
run-build: true run-build: true
build-args: --config ${{matrix.config.build_type}} --target install build-args: --config ${{matrix.config.build_type}} --target install
- name: Unit Tests - name: Unit Tests
run: | run: |
cd "${{github.workspace}}/My Projects/Torque3D/game" cd "${{github.workspace}}/My Projects/Torque3D/game"
./Torque3D runTests.tscript ./Torque3D runTests.tscript
- name: Test Reporter - name: Test Reporter
uses: phoenix-actions/test-reporting@v14 uses: phoenix-actions/test-reporting@v14
with: with:
name: Linux test results name: ${{matrix.config.name}} test results
path: "**/My Projects/Torque3D/game/test_detail.xml" path: "**/My Projects/Torque3D/game/test_detail.xml"
reporter: java-junit reporter: java-junit
fail-on-error: true fail-on-error: true
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'

View file

@ -4,41 +4,57 @@ on:
branches: [development] branches: [development]
pull_request: pull_request:
branches: [development] branches: [development]
env:
build_type: "Release"
cc: "clang"
cxx: "clang++"
concurrency: concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-macosx group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-macosx
cancel-in-progress: true cancel-in-progress: true
permissions: permissions:
checks: write checks: write
jobs: jobs:
build-linux: build-macos:
if: github.repository == 'TorqueGameEngines/Torque3D' if: github.repository == 'TorqueGameEngines/Torque3D'
name: ${{matrix.config.name}} name: ${{matrix.config.name}}
runs-on: macos-latest runs-on: ${{matrix.config.os}}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
config: config:
- { # macos-latest is Apple Silicon (arm64). The Intel entry below
name: "MacOSX Latest Clang", # covers x86_64 users who haven't migrated yet.
build_type: "Release", - {
cc: "clang", name: "macOS ARM Clang Ninja",
cxx: "clang++", os: "macos-latest",
generator: "Ninja" build_type: "Release",
} cc: "clang",
cxx: "clang++",
generator: "Ninja",
}
- {
name: "macOS Intel Clang Ninja",
os: "macos-13",
build_type: "Release",
cc: "clang",
cxx: "clang++",
generator: "Ninja",
}
- {
name: "macOS ARM Xcode",
os: "macos-latest",
build_type: "Release",
cc: "clang",
cxx: "clang++",
generator: "Xcode",
}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- name: Print env - name: Print env
run: | run: |
echo github.event.action: ${{ github.event.action }} echo github.event.action: ${{ github.event.action }}
echo github.event_name: ${{ github.event_name }} echo github.event_name: ${{ github.event_name }}
- name: Run GIT Init - name: Run GIT Init
run: git init run: git init
@ -48,32 +64,33 @@ jobs:
- name: Install MacOSX Dependencies - name: Install MacOSX Dependencies
run: | run: |
brew install ninja zip unzip curl pkgconfig brew install ninja zip unzip curl pkgconfig
ninja --version ninja --version
cmake --version cmake --version
clang --version
- name: Configure, Build & Install - name: Configure, Build & Install
uses: threeal/cmake-action@v1.3.0 uses: threeal/cmake-action@v1.3.0
with: with:
source-dir: ${{github.workspace}} source-dir: ${{github.workspace}}
build-dir: ${{github.workspace}}/build build-dir: ${{github.workspace}}/build
c-compiler: ${{matrix.config.cc}} c-compiler: ${{matrix.config.cc}}
cxx-compiler: ${{matrix.config.cxx}} cxx-compiler: ${{matrix.config.cxx}}
generator: ${{matrix.config.generator}} generator: ${{matrix.config.generator}}
options: CMAKE_BUILD_TYPE=${{matrix.config.build_type}} TORQUE_APP_NAME=Torque3D TORQUE_TESTING=ON options: CMAKE_BUILD_TYPE=${{matrix.config.build_type}} TORQUE_APP_NAME=Torque3D TORQUE_TESTING=ON
run-build: true run-build: true
build-args: --config ${{matrix.config.build_type}} --target install build-args: --config ${{matrix.config.build_type}} --target install
- name: Unit Tests - name: Unit Tests
run: | run: |
cd "${{github.workspace}}/My Projects/Torque3D/game" cd "${{github.workspace}}/My Projects/Torque3D/game"
./Torque3D.app/Contents/MacOS/Torque3D runTests.tscript ./Torque3D.app/Contents/MacOS/Torque3D runTests.tscript
- name: Test Reporter - name: Test Reporter
uses: phoenix-actions/test-reporting@v14 uses: phoenix-actions/test-reporting@v14
with: with:
name: MacOS Test results name: ${{matrix.config.name}} test results
path: "**/My Projects/Torque3D/game/test_detail.xml" path: "**/My Projects/Torque3D/game/test_detail.xml"
reporter: java-junit reporter: java-junit
fail-on-error: true fail-on-error: true
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request'

View file

@ -4,38 +4,83 @@ on:
branches: [development] branches: [development]
pull_request: pull_request:
branches: [development] branches: [development]
concurrency: concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-windows group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}-windows
cancel-in-progress: true cancel-in-progress: true
permissions: permissions:
checks: write checks: write
jobs: jobs:
build-windows: build-windows:
if: github.repository == 'TorqueGameEngines/Torque3D' if: github.repository == 'TorqueGameEngines/Torque3D'
name: ${{matrix.config.name}} name: ${{matrix.config.name}}
runs-on: windows-latest runs-on: ${{matrix.config.os}}
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
config: config:
- { - {
name: "Windows Latest MSVC", name: "Windows MSVC Ninja",
build_type: "Release", os: "windows-latest",
cc: "cl", build_type: "Release",
cxx: "cl", cc: "cl",
environment_script: "C:/Program Files (x86)/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat", cxx: "cl",
generator: "Visual Studio 17 2022" generator: "Ninja",
} cmake_args: "",
compiler_family: "msvc",
msvc_arch: "amd64",
can_test: true,
}
- {
name: "Windows MSVC Visual Studio",
os: "windows-2022",
build_type: "Release",
cc: "cl",
cxx: "cl",
generator: "Visual Studio 17 2022",
cmake_args: "",
compiler_family: "msvc",
msvc_arch: "amd64",
can_test: true,
}
- {
name: "Windows Clang-cl",
os: "windows-latest",
build_type: "Release",
cc: "clang-cl",
cxx: "clang-cl",
generator: "Ninja",
cmake_args: "",
compiler_family: "clang-cl",
msvc_arch: "amd64",
can_test: true,
}
- {
name: "Windows ARM64 MSVC",
os: "windows-latest",
build_type: "Release",
cc: "cl",
cxx: "cl",
generator: "Visual Studio 17 2022",
cmake_args: "-A ARM64",
compiler_family: "msvc",
msvc_arch: "amd64_arm64",
can_test: false,
}
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: ilammy/msvc-dev-cmd@v1.13.0 - uses: ilammy/msvc-dev-cmd@v1.13.0
with:
arch: ${{matrix.config.msvc_arch}}
- name: Print env - name: Print env
run: | run: |
echo github.event.action: ${{ github.event.action }} echo github.event.action: ${{ github.event.action }}
echo github.event_name: ${{ github.event_name }} echo github.event_name: ${{ github.event_name }}
- name: Run GIT Init - name: Run GIT Init
run: git init run: git init
@ -43,33 +88,39 @@ jobs:
- name: Setup MSVC problem matcher - name: Setup MSVC problem matcher
uses: ammaraskar/msvc-problem-matcher@master uses: ammaraskar/msvc-problem-matcher@master
- name: Install Dependencies For ${{matrix.config.name}} - name: Add Clang to PATH
if: matrix.config.compiler_family == 'clang-cl'
run: | run: |
cmake --version echo "C:\Program Files\LLVM\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
cmd "${{matrix.config.environment_script}}"
- name: Verify toolchain
run: cmake --version
- name: Configure, Build & Install - name: Configure, Build & Install
uses: threeal/cmake-action@v1.3.0 uses: threeal/cmake-action@v1.3.0
with: with:
source-dir: ${{github.workspace}} source-dir: ${{github.workspace}}
build-dir: ${{github.workspace}}/build build-dir: ${{github.workspace}}/build
c-compiler: ${{matrix.config.cc}} c-compiler: ${{matrix.config.cc}}
cxx-compiler: ${{matrix.config.cxx}} cxx-compiler: ${{matrix.config.cxx}}
generator: ${{matrix.config.generator}} generator: ${{matrix.config.generator}}
options: CMAKE_BUILD_TYPE=${{matrix.config.build_type}} TORQUE_APP_NAME=Torque3D TORQUE_TESTING=ON args: ${{matrix.config.cmake_args}}
run-build: true options: CMAKE_BUILD_TYPE=${{matrix.config.build_type}} TORQUE_APP_NAME=Torque3D TORQUE_TESTING=ON
build-args: --config ${{matrix.config.build_type}} --target install run-build: true
build-args: --config ${{matrix.config.build_type}} --target install
# Skipped for ARM64 — binary cannot run on the x64 host runner.
- name: Unit Tests - name: Unit Tests
if: matrix.config.can_test
run: | run: |
cd "${{github.workspace}}/My Projects/Torque3D/game" cd "${{github.workspace}}/My Projects/Torque3D/game"
./Torque3D.exe runTests.tscript ./Torque3D.exe runTests.tscript
- name: Test Reporter - name: Test Reporter
uses: phoenix-actions/test-reporting@v14 uses: phoenix-actions/test-reporting@v14
with: with:
name: Windows test results name: ${{matrix.config.name}} test results
path: "**/My Projects/Torque3D/game/test_detail.xml" path: "**/My Projects/Torque3D/game/test_detail.xml"
reporter: java-junit reporter: java-junit
fail-on-error: true fail-on-error: true
if: github.event_name != 'pull_request' if: github.event_name != 'pull_request' && matrix.config.can_test