name: Continuous integration on: [push, pull_request] jobs: linux: name: Build (Linux, GCC) runs-on: ubuntu-16.04 steps: - name: Checkout uses: actions/checkout@v2.3.4 with: submodules: recursive - name: Set up Python (for SCons) uses: actions/setup-python@v2 with: python-version: '3.9.1' - name: Install dependencies run: | sudo apt-get update -qq sudo apt-get install -qqq build-essential pkg-config python -m pip install scons curl -LO https://downloads.tuxfamily.org/godotengine/3.2.3/Godot_v3.2.3-stable_linux_server.64.zip unzip Godot_v3.2.3-stable_linux_server.64.zip - name: Build godot-cpp run: | scons target=release generate_bindings=yes -j $(nproc) - name: Upload artifact uses: actions/upload-artifact@v2.2.2 with: name: godot-cpp-linux-glibc2.23-x86_64-release path: bin/libgodot-cpp.linux.release.64.a if-no-files-found: error - name: Build test GDNative library run: | scons target=release platform=linux bits=64 -j $(nproc) -C test - name: Run test GDNative library run: | ./Godot_v3.2.3-stable_linux_server.64 --path test -s script.gd windows-msvc: name: Build (Windows, MSVC) runs-on: windows-2019 steps: - name: Checkout uses: actions/checkout@v2.3.4 with: submodules: recursive - name: Set up Python (for SCons) uses: actions/setup-python@v2 with: python-version: '3.9.1' - name: Install dependencies run: | python -m pip install scons - name: Build godot-cpp run: | scons target=release generate_bindings=yes -j $env:NUMBER_OF_PROCESSORS - name: Upload artifact uses: actions/upload-artifact@v2.2.2 with: name: godot-cpp-windows-msvc2019-x86_64-release path: bin/libgodot-cpp.windows.release.64.lib if-no-files-found: error windows-mingw: name: Build (Windows, MinGW) runs-on: windows-2019 steps: - name: Checkout uses: actions/checkout@v2.3.4 with: submodules: recursive - name: Set up Python (for SCons) uses: actions/setup-python@v2 with: python-version: '3.9.1' - name: Install dependencies run: | python -m pip install scons - name: Build godot-cpp # Install GCC from Scoop as the default supplied GCC doesn't work ("Error 1"). run: | Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh') scoop install gcc g++ --version gcc --version scons target=release generate_bindings=yes use_mingw=yes -j $env:NUMBER_OF_PROCESSORS - name: Upload artifact uses: actions/upload-artifact@v2.2.2 with: name: godot-cpp-linux-mingw-x86_64-release path: bin/libgodot-cpp.windows.release.64.a if-no-files-found: error macos: name: Build (macOS, Clang) runs-on: macos-10.15 steps: - name: Checkout uses: actions/checkout@v2.3.4 with: submodules: recursive - name: Set up Python (for SCons) uses: actions/setup-python@v2 with: python-version: '3.9.1' - name: Install dependencies run: | python -m pip install scons curl -LO https://downloads.tuxfamily.org/godotengine/3.2.3/Godot_v3.2.3-stable_osx.64.zip unzip Godot_v3.2.3-stable_osx.64.zip - name: Build godot-cpp run: | scons target=release generate_bindings=yes -j $(sysctl -n hw.logicalcpu) - name: Upload artifact uses: actions/upload-artifact@v2.2.2 with: name: godot-cpp-macos-x86_64-release path: bin/libgodot-cpp.osx.release.64.a if-no-files-found: error - name: Build test GDNative library run: | scons target=release platform=osx bits=64 -j $(sysctl -n hw.logicalcpu) -C test - name: Run test GDNative library run: | ./Godot.app/Contents/MacOS/Godot --path test -s script.gd static-checks: name: Static Checks (clang-format) runs-on: ubuntu-16.04 steps: - name: Checkout uses: actions/checkout@v2.3.4 - name: Install dependencies run: | sudo apt-get install clang-format-8 - name: Style checks via clang-format run: | bash ./misc/scripts/clang_format.sh