Skip to content

Merge branch 'main' into feature/fill-classes-singletons #544

Merge branch 'main' into feature/fill-classes-singletons

Merge branch 'main' into feature/fill-classes-singletons #544

Workflow file for this run

name: Build and Test
on: [push, pull_request]
defaults:
run:
shell: bash
env:
SCONS_CACHE: ${{ github.workspace }}/.scons-cache
SCONS_VERSION: 4.9.1
jobs:
build_linux:
name: ${{ matrix.platform }} (${{ matrix.arch }}, ${{ matrix.target }}, ${{ matrix.lua-runtime }})
runs-on: ${{ matrix.runner || 'ubuntu-22.04' }}
strategy:
fail-fast: false
matrix:
target: [template_debug, template_release]
arch: [x86_64, x86_32, arm64, arm32]
platform: [linux, android]
lua-runtime: [lua, luajit]
include:
- platform: linux
arch: x86_32
packages: [g++-multilib]
- platform: linux
arch: arm64
runner: ubuntu-24.04-arm
- platform: android
arch: x86_32
packages: [g++-multilib]
- platform: android
arch: arm32
packages: [g++-multilib]
exclude:
- platform: linux
arch: arm32
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup godot-cpp
uses: ./lib/godot-cpp/.github/actions/setup-godot-cpp
with:
platform: ${{ matrix.platform }}
scons-version: $SCONS_VERSION
- name: Setup dependencies
if: ${{ join(matrix.packages, ' ') != '' }}
run: |
sudo apt-get update
sudo apt-get install ${{ join(matrix.packages, ' ') }}
- name: Cache SCons files
uses: actions/cache@v4
with:
path: .scons-cache/
key: ${{ matrix.platform }}-${{ matrix.arch }}-${{ matrix.target }}-${{ matrix.lua-runtime }}-${{ hashfiles('.gitmodules', 'src/**') }}
restore-keys: |
${{ matrix.platform }}-${{ matrix.arch }}-${{ matrix.target }}-${{ matrix.lua-runtime }}-
- name: Build artifact
run: |
scons platform=${{ matrix.platform }} arch=${{ matrix.arch }} target=${{ matrix.target }} lua_runtime=${{ matrix.lua-runtime }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.platform }}-${{ matrix.arch }}-${{ matrix.target }}-${{ matrix.lua-runtime }}
path: |
addons/lua-gdextension/build/libluagdextension.*
build_windows:
name: ${{ matrix.platform }} (${{ matrix.arch }}, ${{ matrix.target }}, ${{ matrix.lua-runtime }})
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
target: [template_debug, template_release]
arch: [x86_64, x86_32, arm64]
platform: [windows]
lua-runtime: [lua, luajit]
defaults:
run:
shell: pwsh
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup godot-cpp
uses: ./lib/godot-cpp/.github/actions/setup-godot-cpp
with:
platform: ${{ matrix.platform }}
scons-version: $SCONS_VERSION
windows-compiler: msvc
- name: Cache SCons files
uses: actions/cache@v4
with:
path: .scons-cache/
key: ${{ matrix.platform }}-${{ matrix.arch }}-${{ matrix.target }}-${{ matrix.lua-runtime }}-${{ hashfiles('.gitmodules', 'src/**') }}
restore-keys: |
${{ matrix.platform }}-${{ matrix.arch }}-${{ matrix.target }}-${{ matrix.lua-runtime }}-
- name: Build artifact
run: |
scons platform=${{ matrix.platform }} arch=${{ matrix.arch }} target=${{ matrix.target }} lua_runtime=${{ matrix.lua-runtime }} vcvarsall_path="C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat"
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.platform }}-${{ matrix.arch }}-${{ matrix.target }}-${{ matrix.lua-runtime }}
path: |
addons/lua-gdextension/build/libluagdextension.*
build_web:
name: web (wasm32, ${{ matrix.target }}, ${{ matrix.threads && 'threads' || 'nothreads' }}, ${{ matrix.lua-runtime }})
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: [template_debug, template_release]
threads: [true, false]
lua-runtime: [lua, luajit]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup godot-cpp
uses: ./lib/godot-cpp/.github/actions/setup-godot-cpp
with:
platform: web
scons-version: $SCONS_VERSION
- name: Cache SCons files
uses: actions/cache@v4
with:
path: .scons-cache/
key: web-wasm32-${{ matrix.target }}-${{ matrix.threads && 'threads' || 'nothreads' }}-${{ matrix.lua-runtime }}-${{ hashfiles('.gitmodules', 'src/**') }}
restore-keys: |
web-wasm32-${{ matrix.target }}-${{ matrix.threads && 'threads' || 'nothreads' }}-${{ matrix.lua-runtime }}-
- name: Build artifact
run: |
scons platform=web arch=wasm32 target=${{ matrix.target }} threads=${{ matrix.threads }} lua_runtime=${{ matrix.lua-runtime }}
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: web-wasm32-${{ matrix.target }}-${{ matrix.threads && 'threads' || 'nothreads' }}-${{ matrix.lua-runtime }}
path: |
addons/lua-gdextension/build/libluagdextension.*
build_macos:
name: ${{ matrix.platform }} (${{ matrix.arch }}, ${{ matrix.target }}, ${{ matrix.lua-runtime }})
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
target: [template_debug, template_release]
arch: [universal]
platform: [macos, ios]
lua-runtime: [lua, luajit]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Setup godot-cpp
uses: ./lib/godot-cpp/.github/actions/setup-godot-cpp
with:
platform: ${{ matrix.platform }}
scons-version: $SCONS_VERSION
- name: Cache SCons files
uses: actions/cache@v4
with:
path: .scons-cache/
key: ${{ matrix.platform }}-${{ matrix.arch }}-${{ matrix.target }}-${{ matrix.lua-runtime }}-${{ hashfiles('.gitmodules', 'src/**') }}
restore-keys: |
${{ matrix.platform }}-${{ matrix.arch }}-${{ matrix.target }}-${{ matrix.lua-runtime }}-
- name: Build artifact
run: |
scons platform=${{ matrix.platform }} arch=${{ matrix.arch }} target=${{ matrix.target }} lua_runtime=${{ matrix.lua-runtime }}
env:
PYTHON_BIN: python3
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.platform }}-${{ matrix.arch }}-${{ matrix.target }}-${{ matrix.lua-runtime }}
path: |
addons/lua-gdextension/build/lib*
test_distribution:
name: Test ${{ matrix.name }} (${{ matrix.lua-runtime }})
needs: [build_linux, build_windows, build_macos, build_web]
runs-on: ${{ matrix.runner-os }}
strategy:
fail-fast: false
matrix:
name: ["Linux", "Linux (arm64)", "Windows", "Windows (arm64)", "macOS"]
lua-runtime: [lua, luajit]
include:
- name: Linux
runner-os: ubuntu-latest
godot-release: 4.4.1-stable/Godot_v4.4.1-stable_linux.x86_64.zip
godot-bin: ./Godot_v4.4.1-stable_linux.x86_64
- name: Linux (arm64)
runner-os: ubuntu-24.04-arm
godot-release: 4.4.1-stable/Godot_v4.4.1-stable_linux.arm64.zip
godot-bin: ./Godot_v4.4.1-stable_linux.arm64
- name: Windows
runner-os: windows-latest
godot-release: 4.4.1-stable/Godot_v4.4.1-stable_win64.exe.zip
godot-bin: ./Godot_v4.4.1-stable_win64.exe
- name: Windows (arm64)
runner-os: windows-11-arm
godot-release: 4.4.1-stable/Godot_v4.4.1-stable_windows_arm64.exe.zip
godot-bin: ./Godot_v4.4.1-stable_windows_arm64.exe
- name: macOS
runner-os: macos-latest
godot-release: 4.4.1-stable/Godot_v4.4.1-stable_macos.universal.zip
godot-bin: ./Godot.app/Contents/MacOS/Godot
env:
GODOT_BIN: ${{ matrix.godot-bin }}
MSYS_NO_PATHCONV: 1
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Download artifacts
id: download
uses: actions/download-artifact@v4
with:
path: artifacts
pattern: "*-${{ matrix.lua-runtime }}"
- name: Setup godot-cpp
uses: ./lib/godot-cpp/.github/actions/setup-godot-cpp
with:
platform: linux
scons-version: $SCONS_VERSION
- name: Copy artifacts to build folder
run: |
scons lua_runtime=${{ matrix.lua-runtime }} addons_files
cp -r '${{ steps.download.outputs.download-path }}'/**/lib* addons/lua-gdextension/build
- name: Download Godot
run: |
curl --location https://github.com/godotengine/godot/releases/download/${{ matrix.godot-release }} --output godot.zip
unzip godot.zip
- name: Run tests
run: |
make test
distribute_zip:
name: Distribute zip (${{ matrix.lua-runtime }})
needs: [build_linux, build_windows, build_macos, build_web]
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
lua-runtime: [lua, luajit]
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Download artifacts
id: download
uses: actions/download-artifact@v4
with:
path: artifacts
pattern: "*-${{ matrix.lua-runtime }}"
- name: Setup godot-cpp
uses: ./lib/godot-cpp/.github/actions/setup-godot-cpp
with:
platform: linux
scons-version: $SCONS_VERSION
- name: Copy artifacts to build folder
run: |
scons lua_runtime=${{ matrix.lua-runtime }} addons_files
cp -r ${{ steps.download.outputs.download-path }}/**/lib* addons/lua-gdextension/build
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.lua-runtime == 'lua' && 'lua-gdextension' || format('lua-gdextension+{0}', matrix.lua-runtime) }}
path: |
LICENSE
addons/lua-gdextension/**
addons/lua-gdextension/build/.gdignore
include-hidden-files: true