Works by executing project `SConstruct`s file in a cloned env (a bit like Godot does for modules) so you don't have to worry about platform and toolchain setup. Convert the project test file to work as submodule, add it to CI Run with: ``` scons build_projects=test,/path/to/other/project ```
215 lines
5.9 KiB
YAML
215 lines
5.9 KiB
YAML
name: Continuous integration
|
|
on: [push, pull_request]
|
|
|
|
jobs:
|
|
linux:
|
|
name: Build (Linux, GCC)
|
|
runs-on: ubuntu-18.04
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Set up Python (for SCons)
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -qq
|
|
sudo apt-get install -qqq build-essential pkg-config
|
|
python -m pip install scons
|
|
|
|
- name: Build godot-cpp
|
|
run: |
|
|
scons target=release generate_bindings=yes -j $(nproc)
|
|
|
|
- name: Build test project
|
|
run: |
|
|
cd test
|
|
scons target=release -j $(nproc)
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v2
|
|
with:
|
|
name: godot-cpp-linux-glibc2.27-x86_64-release
|
|
path: bin/libgodot-cpp.linux.release.64.a
|
|
if-no-files-found: error
|
|
|
|
linux-cmake:
|
|
name: Build (Linux, GCC, CMake)
|
|
runs-on: ubuntu-18.04
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -qq
|
|
sudo apt-get install -qqq build-essential pkg-config cmake
|
|
|
|
- name: Build godot-cpp
|
|
run: |
|
|
cmake -DCMAKE_BUILD_TYPE=Release .
|
|
make -j $(nproc)
|
|
|
|
- name: Build test GDNative library
|
|
run: |
|
|
cd test && cmake -DCMAKE_BUILD_TYPE=Release .
|
|
make -j $(nproc)
|
|
|
|
linux-cmake-ninja:
|
|
name: Build (Linux, GCC, CMake Ninja)
|
|
runs-on: ubuntu-18.04
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -qq
|
|
sudo apt-get install -qqq build-essential pkg-config cmake ninja-build
|
|
|
|
- name: Build godot-cpp
|
|
run: |
|
|
cmake -DCMAKE_BUILD_TYPE=Release -GNinja .
|
|
cmake --build . -j $(nproc)
|
|
|
|
- name: Build test GDNative library
|
|
run: |
|
|
cd test && cmake -DCMAKE_BUILD_TYPE=Release -GNinja .
|
|
cmake --build . -j $(nproc)
|
|
|
|
windows-msvc:
|
|
name: Build (Windows, MSVC)
|
|
runs-on: windows-2019
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Set up Python (for SCons)
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
|
|
- 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: Build test project
|
|
run: |
|
|
cd test
|
|
scons target=release -j $env:NUMBER_OF_PROCESSORS
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v2
|
|
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
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Set up Python (for SCons)
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
|
|
- 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: Build test project (TODO currently not supported, leaving uncommented as a reminder to fix this)
|
|
# run: |
|
|
# cd test
|
|
# scons target=release use_mingw=yes -j $env:NUMBER_OF_PROCESSORS
|
|
|
|
- name: Build test
|
|
run: |
|
|
scons platform=${{ matrix.platform }} target=release ${{ matrix.flags }} -j2 build_projects=test
|
|
|
|
- name: Upload artifact
|
|
uses: actions/upload-artifact@v2
|
|
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, universal / x86_64 + arm64)
|
|
runs-on: macos-11
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Set up Python (for SCons)
|
|
uses: actions/setup-python@v2
|
|
with:
|
|
python-version: '3.x'
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install scons
|
|
|
|
- name: Build godot-cpp
|
|
run: |
|
|
scons target=release generate_bindings=yes -j $(sysctl -n hw.logicalcpu)
|
|
|
|
- name: Build test project
|
|
run: |
|
|
cd test
|
|
scons target=release -j $(sysctl -n hw.logicalcpu)
|
|
|
|
static-checks:
|
|
name: Static Checks (clang-format)
|
|
runs-on: ubuntu-20.04
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v2
|
|
|
|
- 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-11
|
|
sudo update-alternatives --remove-all clang-format
|
|
sudo update-alternatives --install /usr/bin/clang-format clang-format /usr/bin/clang-format-11 100
|
|
|
|
- name: Style checks via clang-format
|
|
run: |
|
|
bash ./misc/scripts/clang_format.sh
|