CI: Update images and actions for 2026 #2429
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: Continuous integration | |
| on: [push, pull_request] | |
| jobs: | |
| build: | |
| name: ${{ matrix.name }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| - name: π§ Linux (GCC) | |
| os: ubuntu-22.04 | |
| platform: linux | |
| artifact-name: godot-cpp-linux-glibc2.35-x86_64-release | |
| artifact-path: bin/libgodot-cpp.linux.release.64.a | |
| godot_zip: Godot_v3.5-stable_linux_server.64.zip | |
| executable: Godot_v3.5-stable_linux_server.64 | |
| - name: π Windows (x86_64, MSVC) | |
| os: windows-2022 | |
| platform: windows | |
| artifact-name: godot-cpp-windows-msvc2022-x86_64-release | |
| artifact-path: bin/libgodot-cpp.windows.release.64.lib | |
| - name: π Windows (x86_64, MinGW) | |
| os: windows-2022 | |
| platform: windows | |
| artifact-name: godot-cpp-linux-mingw-x86_64-release | |
| artifact-path: bin/libgodot-cpp.windows.release.64.a | |
| flags: use_mingw=yes | |
| - name: π macOS (universal) | |
| os: macos-15 | |
| platform: osx | |
| artifact-name: godot-cpp-macos-universal-release | |
| artifact-path: bin/libgodot-cpp.osx.release.64.a | |
| flags: macos_arch=universal | |
| godot_zip: Godot_v3.5-stable_osx.universal.zip | |
| executable: Godot.app/Contents/MacOS/Godot | |
| - name: π€ Android (arm64) | |
| os: ubuntu-22.04 | |
| platform: android | |
| artifact-name: godot-cpp-android-arm64-release | |
| artifact-path: bin/libgodot-cpp.android.release.arm64v8.a | |
| flags: ANDROID_NDK_ROOT=$ANDROID_NDK_LATEST_HOME android_arch=arm64v8 | |
| - name: π iOS (arm64) | |
| os: macos-15 | |
| platform: ios | |
| artifact-name: godot-cpp-ios-arm64-release | |
| artifact-path: bin/libgodot-cpp.ios.release.arm64.a | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Set up Python (for SCons) | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.x' | |
| - name: Linux dependencies | |
| if: ${{ matrix.platform == 'linux' }} | |
| run: | | |
| sudo apt-get update -qq | |
| sudo apt-get install -qqq build-essential pkg-config | |
| - name: Install scons | |
| run: | | |
| python -m pip install scons | |
| - name: Windows dependency (MinGW) | |
| if: ${{ matrix.platform == 'windows' }} | |
| uses: egor-tensin/setup-mingw@v3 | |
| with: | |
| version: 12.2.0 | |
| - name: Build godot-cpp (debug) | |
| run: | | |
| scons platform=${{ matrix.platform }} target=debug generate_bindings=yes ${{ matrix.flags }} | |
| - name: Build test without rebuilding godot-cpp (debug) | |
| run: | | |
| cd test | |
| scons platform=${{ matrix.platform }} target=debug ${{ matrix.flags }} build_library=no | |
| - name: Build test and godot-cpp (release) | |
| run: | | |
| cd test | |
| scons platform=${{ matrix.platform }} target=release ${{ matrix.flags }} | |
| - name: Run test GDNative library | |
| if: ${{ matrix.platform == 'linux' || matrix.platform == 'osx' }} | |
| run: | | |
| curl -LO https://github.com/godotengine/godot/releases/download/3.5-stable/${{ matrix.godot_zip }} | |
| unzip ${{ matrix.godot_zip }} | |
| ./${{ matrix.executable }} --path test -s script.gd | |
| - name: Upload artifact | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: ${{ matrix.artifact-name }} | |
| path: ${{ matrix.artifact-path }} | |
| if-no-files-found: error | |
| static-checks: | |
| name: π Static Checks (clang-format) | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| with: | |
| submodules: recursive | |
| - name: Make apt sources.list use the default Ubuntu repositories | |
| run: | | |
| sudo rm -f /etc/apt/sources.list.d/* | |
| sudo cp -f misc/ci/sources.list /etc/apt/sources.list | |
| sudo apt-get update | |
| - name: Install dependencies | |
| run: | | |
| sudo apt-get install -qq dos2unix recode clang-format | |
| - name: Style checks via clang-format | |
| run: | | |
| bash ./misc/scripts/clang_format.sh |