Merge branch 'github-workflows'

This commit is contained in:
Serhii Snitsaruk 2023-08-02 10:12:55 +02:00
commit c31f47fe3d
7 changed files with 1192 additions and 0 deletions

190
.github/workflows/android.yml vendored Normal file
View File

@ -0,0 +1,190 @@
name: 🤖 Android builds
on:
workflow_call:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
workflow_dispatch:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
# Global Settings
env:
SCONS_CACHE_LIMIT: 4096
SCONSFLAGS: production=yes tests=no verbose=yes warnings=extra werror=yes
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
NAME_PREFIX: godot.${{inputs.godot-treeish}}.limboai+${{inputs.limboai-treeish}}
jobs:
android-builds:
runs-on: "ubuntu-20.04"
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- name: Template (arm64, debug)
arch: arm64
target: template_debug
- name: Template (arm64, release)
arch: arm64
target: template_release
- name: Template (arm32, debug)
arch: arm32
target: template_debug
- name: Template (arm32, release)
arch: arm32
target: template_release
- name: Template (x86_64, debug)
arch: x86_64
target: template_debug
- name: Template (x86_64, release)
arch: x86_64
target: template_release
- name: Template (x86_32, debug)
arch: x86_32
target: template_debug
- name: Template (x86_32, release)
arch: x86_32
target: template_release
env:
BIN: godot.linuxbsd.${{matrix.target}}.${{matrix.arch}} #${{ matrix.build-mono == true && '.mono' || '' }}
steps:
- name: Clone Godot
uses: actions/checkout@v3
with:
repository: godotengine/godot
ref: ${{ inputs.godot-treeish }}
- name: Clone LimboAI module
uses: actions/checkout@v3
with:
path: modules/limboai
ref: ${{ inputs.limboai-treeish }}
- name: Set up Java 11
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 11
- name: Set up scons
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons==4.4.0
python --version
scons --version
- name: Set up scons cache
uses: actions/cache@v3
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{matrix.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}
- name: Compilation
env:
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
run: |
scons platform=android target=${{matrix.target}} arch=${{matrix.arch}} ${{env.SCONSFLAGS}}
ls platform/android/java/lib/libs/*
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: android-templates
path: platform/android/java/lib/libs/*
make-android-package:
runs-on: "ubuntu-20.04"
name: Make Android package
needs: android-builds
steps:
- name: Clone Godot
uses: actions/checkout@v3
with:
repository: godotengine/godot
ref: ${{ inputs.godot-treeish }}
- name: Download Android template builds
uses: actions/download-artifact@v3
with:
name: android-templates
path: platform/android/java/lib/libs/
- name: Set up Java 11
uses: actions/setup-java@v3
with:
distribution: temurin
java-version: 11
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: 3.x
architecture: x64
- name: Set up scons
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons==4.4.0
python --version
scons --version
- name: Generate Godot templates
run: |
cd platform/android/java
./gradlew generateGodotTemplates
cd ../../..
ls -l bin/
mkdir -p out/templates/
mv bin/android_* out/templates/
ls -l out/*
- name: Delete Android template builds
uses: geekyeggo/delete-artifact@v2
with:
name: android-templates
failOnError: false
- name: Upload Android libs
uses: actions/upload-artifact@v3
with:
name: ${{env.NAME_PREFIX}}.android-lib
path: bin/godot-lib.*
- name: Upload Android templates
uses: actions/upload-artifact@v3
with:
name: ${{env.NAME_PREFIX}}.export-templates
path: out/*

194
.github/workflows/ios.yml vendored Normal file
View File

@ -0,0 +1,194 @@
name: 🍏 iOS builds
on:
workflow_call:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
workflow_dispatch:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
# Global Settings
env:
SCONS_CACHE_LIMIT: 4096
SCONSFLAGS: production=yes tests=no verbose=yes warnings=extra werror=yes
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
NAME_PREFIX: godot.${{inputs.godot-treeish}}.limboai+${{inputs.limboai-treeish}}
jobs:
ios-builds:
runs-on: "macos-latest"
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- name: Template (arm64, release)
target: template_release
arch: arm64
ios_simulator: false
- name: Template (arm64, debug)
target: template_debug
arch: arm64
ios_simulator: false
- name: Simulator Lib (x86_64, release)
target: template_release
arch: x86_64
ios_simulator: true
- name: Simulator Lib (x86_64, debug)
target: template_debug
arch: x86_64
ios_simulator: true
# ! Disabled for now as it doesn't work with cctools-port and current LLVM.
# * See https://github.com/godotengine/build-containers/pull/85.
# - name: Simulator Lib (arm64, release)
# target: template_release
# arch: arm64
# ios_simulator: true
# - name: Simulator Lib (arm64, debug)
# target: template_debug
# arch: arm64
# ios_simulator: true
env:
BIN: godot.ios.${{matrix.target}}.${{matrix.arch}}
steps:
- name: Clone Godot
uses: actions/checkout@v3
with:
repository: godotengine/godot
ref: ${{ inputs.godot-treeish }}
- name: Clone LimboAI module
uses: actions/checkout@v3
with:
path: modules/limboai
ref: ${{ inputs.limboai-treeish }}
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: '3.x'
architecture: 'x64'
- name: Set up scons
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons==4.4.0
- name: Diagnostics
run: |
python --version
scons --version
dotnet --info
- name: Set up Vulkan SDK
run: |
sh misc/scripts/install_vulkan_sdk_macos.sh
- name: Set up scons cache
uses: actions/cache@v3
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{matrix.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}
- name: Compilation
env:
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
run: |
scons platform=ios target=${{matrix.target}} arch=${{matrix.arch}} ios_simulator=${{matrix.ios_simulator}} ${{env.SCONSFLAGS}}
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: ios-templates
path: bin/*
package-ios-templates:
runs-on: "macos-latest"
name: Package iOS templates
needs: ios-builds
steps:
- name: Clone Godot
uses: actions/checkout@v3
with:
repository: godotengine/godot
ref: ${{ inputs.godot-treeish }}
- name: Set up Vulkan SDK
run: |
sh misc/scripts/install_vulkan_sdk_macos.sh
- name: Download templates artifact
uses: actions/download-artifact@v3
with:
name: ios-templates
path: bin/
- name: Make template bundle
run: |
ls bin/
cp -r misc/dist/ios_xcode bin/
cd bin/
strip *.a
mv libgodot.ios.template_debug.arm64.a ios_xcode/libgodot.ios.debug.xcframework/ios-arm64/libgodot.a
# ! lipo -create libgodot.ios.template_debug.arm64.simulator.a libgodot.ios.template_debug.x86_64.simulator.a -output ios_xcode/libgodot.ios.debug.xcframework/ios-arm64_x86_64-simulator/libgodot.a
mv libgodot.ios.template_debug.x86_64.simulator.a ios_xcode/libgodot.ios.debug.xcframework/ios-arm64_x86_64-simulator/libgodot.a
mv libgodot.ios.template_release.arm64.a ios_xcode/libgodot.ios.release.xcframework/ios-arm64/libgodot.a
# ! lipo -create libgodot.ios.template_release.arm64.simulator.a libgodot.ios.template_release.x86_64.simulator.a -output ios_xcode/libgodot.ios.release.xcframework/ios-arm64_x86_64-simulator/libgodot.a
mv libgodot.ios.template_release.x86_64.simulator.a ios_xcode/libgodot.ios.release.xcframework/ios-arm64_x86_64-simulator/libgodot.a
cp -r ~/VulkanSDK/*/MoltenVK/MoltenVK.xcframework ios_xcode
rm -rf ios_xcode/MoltenVK.xcframework/{macos,tvos}*
mkdir -p ${{github.workspace}}/out/templates/
cd ios_xcode
zip -q -9 -r ${{github.workspace}}/out/templates/ios.zip *
ls -l ${{github.workspace}}/out/*
- name: Upload template bundle
uses: actions/upload-artifact@v3
with:
name: ${{env.NAME_PREFIX}}.export-templates
path: out/*
- name: Delete templates artifact
uses: geekyeggo/delete-artifact@v2
with:
name: ios-templates
failOnError: false

188
.github/workflows/linux.yml vendored Normal file
View File

@ -0,0 +1,188 @@
name: 🐧 Linux builds
on:
workflow_call:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
workflow_dispatch:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
# Global Settings
env:
SCONS_CACHE_LIMIT: 4096
SCONSFLAGS: production=yes tests=no verbose=yes warnings=extra werror=yes
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
NAME_PREFIX: godot.${{inputs.godot-treeish}}.limboai+${{inputs.limboai-treeish}}
jobs:
linux-builds:
runs-on: "ubuntu-20.04"
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- name: Editor (x86_64, release)
target: editor
arch: x86_64
build-mono: false
- name: Template (x86_64, release)
target: template_release
arch: x86_64
build-mono: false
- name: Template (x86_64, debug)
target: template_debug
arch: x86_64
build-mono: false
# - name: Editor (x86_32, release)
# target: editor
# arch: x86_32
# build-mono: false
- name: Template (x86_32, release)
target: template_release
arch: x86_32
build-mono: false
- name: Template (x86_32, debug)
target: template_debug
arch: x86_32
build-mono: false
- name: Editor .NET (x86_64, release)
target: editor
arch: x86_64
build-mono: true
- name: Template .NET (x86_64, release)
target: template_release
arch: x86_64
build-mono: true
- name: Template .NET (x86_64, debug)
target: template_debug
arch: x86_64
build-mono: true
# - name: Editor .NET (x86_32, release)
# target: editor
# arch: x86_32
# build-mono: true
- name: Template .NET (x86_32, release)
target: template_release
arch: x86_32
build-mono: true
- name: Template .NET (x86_32, debug)
target: template_debug
arch: x86_32
build-mono: true
env:
BIN: godot.linuxbsd.${{matrix.target}}.${{matrix.arch}}${{ matrix.build-mono == true && '.mono' || '' }}
steps:
- name: Dump environment
env:
ENVI: ${{ toJson(env) }}
run: |
echo "$ENVI"
- name: Clone Godot
uses: actions/checkout@v3
with:
repository: godotengine/godot
ref: ${{ inputs.godot-treeish }}
- name: Clone LimboAI module
uses: actions/checkout@v3
with:
path: modules/limboai
ref: ${{ inputs.limboai-treeish }}
# About sed see: https://github.com/godotengine/buildroot/issues/6
- name: Set up buildroot x86_64
if: matrix.arch == 'x86_64'
run: |
wget https://download.tuxfamily.org/godotengine/toolchains/linux/x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2
tar -xjf x86_64-godot-linux-gnu_sdk-buildroot.tar.bz2
mv x86_64-godot-linux-gnu_sdk-buildroot buildroot
cd buildroot
sed -i x86_64-godot-linux-gnu/sysroot/usr/lib/pkgconfig/dbus-1.pc -e "s@/lib@/lib64@g"
./relocate-sdk.sh
cd ..
- name: Set up buildroot x86_32
if: matrix.arch == 'x86_32'
run: |
wget https://download.tuxfamily.org/godotengine/toolchains/linux/i686-godot-linux-gnu_sdk-buildroot.tar.bz2
tar -xjf i686-godot-linux-gnu_sdk-buildroot.tar.bz2
mv i686-godot-linux-gnu_sdk-buildroot buildroot
cd buildroot
./relocate-sdk.sh
cd ..
- name: Set up scons cache
uses: actions/cache@v3
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{matrix.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}
- name: Compilation
env:
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
run: |
PATH=${GITHUB_WORKSPACE}/buildroot/bin:$PATH
scons platform=linuxbsd target=${{matrix.target}} arch=${{matrix.arch}} module_mono_enabled=${{matrix.build-mono}} ${{env.SCONSFLAGS}}
- name: Generate C# glue
if: matrix.build-mono && matrix.target == 'editor'
run: |
./bin/$BIN --headless --generate-mono-glue ./modules/mono/glue || true
- name: Build .NET solutions
if: matrix.build-mono && matrix.target == 'editor'
run: |
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=linuxbsd
- name: Prepare artifact
env:
OUTDIR: ${{ startsWith(matrix.target, 'template') && 'out/templates' || 'out/' }}
run: |
strip ./bin/godot.*
chmod +x ./bin/godot.*
mkdir -p ${{env.OUTDIR}}
mv ./bin/godot.* ${{env.OUTDIR}}
- name: Upload artifact
uses: actions/upload-artifact@v3
env:
NAME_EDITOR: ${{env.NAME_PREFIX}}.${{matrix.target}}.linux.${{matrix.arch}}${{ matrix.build-mono == true && '.mono' || '' }}
NAME_TEMPLATES: ${{env.NAME_PREFIX}}.export-templates${{ matrix.build-mono == true && '.mono' || '' }}
with:
name: ${{ startsWith(matrix.target, 'template') && env.NAME_TEMPLATES || env.NAME_EDITOR }}
path: out/*

269
.github/workflows/macos.yml vendored Normal file
View File

@ -0,0 +1,269 @@
name: 🍎 macOS builds
on:
workflow_call:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
workflow_dispatch:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
# Global Settings
env:
SCONS_CACHE_LIMIT: 4096
SCONSFLAGS: production=yes tests=no verbose=yes warnings=extra werror=yes
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
NAME_PREFIX: godot.${{inputs.godot-treeish}}.limboai+${{inputs.limboai-treeish}}
jobs:
macos-builds:
runs-on: "macos-latest"
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- name: Editor (x86_64, release)
target: editor
arch: x86_64
build-mono: false
artifact-name: macos-editor
- name: Template (x86_64, release)
target: template_release
arch: x86_64
build-mono: false
artifact-name: macos-templates
- name: Template (x86_64, debug)
target: template_debug
arch: x86_64
build-mono: false
artifact-name: macos-templates
- name: Editor (arm64, release)
target: editor
arch: arm64
build-mono: false
artifact-name: macos-editor
- name: Template (arm64, release)
target: template_release
arch: arm64
build-mono: false
artifact-name: macos-templates
- name: Template (arm64, debug)
target: template_debug
arch: arm64
build-mono: false
artifact-name: macos-templates
# ! Disabled for now: .NET version fail to build
# - name: .NET Editor (x86_64, release)
# target: editor
# arch: x86_64
# build-mono: true
# artifact-name: macos-mono-editor
# cache-name: macos-editor
# - name: .NET Template (x86_64, release)
# target: template_release
# arch: x86_64
# build-mono: true
# artifact-name: macos-mono-templates
# - name: .NET Template (x86_64, debug)
# target: template_debug
# arch: x86_64
# build-mono: true
# artifact-name: macos-mono-templates
# - name: .NET Editor (arm64, release)
# target: editor
# arch: arm64
# build-mono: true
# artifact-name: macos-mono-editor
# cache-name: macos-editor
# - name: .NET Template (arm64, release)
# target: template_release
# arch: arm64
# build-mono: true
# artifact-name: macos-mono-templates
# - name: .NET Template (arm64, debug)
# target: template_debug
# arch: arm64
# build-mono: true
# artifact-name: macos-mono-templates
env:
BIN: godot.macos.${{matrix.target}}.${{matrix.arch}}${{ matrix.build-mono == true && '.mono' || '' }}
steps:
- name: Clone Godot
uses: actions/checkout@v3
with:
repository: godotengine/godot
ref: ${{ inputs.godot-treeish }}
- name: Clone LimboAI module
uses: actions/checkout@v3
with:
path: modules/limboai
ref: ${{ inputs.limboai-treeish }}
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: '3.x'
architecture: 'x64'
- name: Set up scons
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons==4.4.0
- name: Diagnostics
run: |
python --version
scons --version
dotnet --info
- name: Set up Vulkan SDK
run: |
sh misc/scripts/install_vulkan_sdk_macos.sh
- name: Set up scons cache
uses: actions/cache@v3
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{matrix.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}
- name: Compilation
env:
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
run: |
scons -j2 platform=macos target=${{matrix.target}} arch=${{matrix.arch}} module_mono_enabled=${{matrix.build-mono}} ${{env.SCONSFLAGS}}
# ! Disabled for now: .NET version fail to build
# - name: Generate C# glue
# if: matrix.build-mono && matrix.target == 'editor'
# run: |
# ./bin/$BIN --headless --generate-mono-glue ./modules/mono/glue || true
# - name: Build .NET solutions
# if: matrix.build-mono && matrix.target == 'editor'
# run: |
# ./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=macos
- name: Prepare artifact
run: |
strip bin/godot.*
chmod +x bin/godot.*
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: ${{ matrix.artifact-name }}
path: bin/*
make-macos-bundle:
runs-on: "macos-latest"
name: Make macOS Bundles
needs: macos-builds
steps:
- name: Clone Godot
uses: actions/checkout@v3
with:
repository: godotengine/godot
ref: ${{ inputs.godot-treeish }}
- name: Download editor artifact
uses: actions/download-artifact@v3
with:
name: macos-editor
path: bin/
- name: Make editor bundle
run: |
ls bin/
lipo -create bin/godot.macos.editor.x86_64 bin/godot.macos.editor.arm64 -output bin/godot.macos.editor.universal
strip bin/godot.macos.editor.universal
rm bin/godot.macos.editor.{x86_64,arm64}
mkdir -p out/editor/
cp -r misc/dist/macos_tools.app out/editor/Godot.app
mkdir -p out/editor/Godot.app/Contents/MacOS
cp bin/godot.macos.editor.universal out/editor/Godot.app/Contents/MacOS/Godot
chmod +x out/editor/Godot.app/Contents/MacOS/Godot
ls out/editor/
- name: Upload editor bundle
uses: actions/upload-artifact@v3
with:
name: ${{env.NAME_PREFIX}}.editor.macos.universal
path: out/editor/*
- name: Download templates artifact
uses: actions/download-artifact@v3
with:
name: macos-templates
path: bin/
- name: Make templates bundle
run: |
rm -rf out/
ls bin/
lipo -create bin/godot.macos.template_release.x86_64 bin/godot.macos.template_release.arm64 -output bin/godot.macos.template_release.universal
lipo -create bin/godot.macos.template_debug.x86_64 bin/godot.macos.template_debug.arm64 -output bin/godot.macos.template_debug.universal
rm bin/godot.macos.template_{debug,release}.{x86_64,arm64}
strip bin/godot.*
cp -r misc/dist/macos_template.app macos_template.app
mkdir -p macos_template.app/Contents/MacOS
cp bin/godot.macos.template_debug.universal macos_template.app/Contents/MacOS/godot_macos_debug.universal
cp bin/godot.macos.template_release.universal macos_template.app/Contents/MacOS/godot_macos_release.universal
chmod +x macos_template.app/Contents/MacOS/godot_macos_{release,debug}.universal
zip -r macos.zip macos_template.app
rm bin/*
mkdir -p out/templates/
mv macos.zip out/templates/macos.zip
ls out/templates/
- uses: geekyeggo/delete-artifact@v2
with:
name: macos-*
useGlob: true
failOnError: false
- name: Upload templates bundle
uses: actions/upload-artifact@v3
with:
name: ${{env.NAME_PREFIX}}.export-templates
path: out/*

55
.github/workflows/runner.yml vendored Normal file
View File

@ -0,0 +1,55 @@
name: 🔗 All Builds
on:
workflow_dispatch:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
jobs:
android-build:
name: 🤖 Android
uses: ./.github/workflows/android.yml
with:
godot-treeish: ${{ inputs.godot-treeish }}
limboai-treeish: ${{ inputs.limboai-treeish }}
ios-build:
name: 🍏 iOS
uses: ./.github/workflows/ios.yml
with:
godot-treeish: ${{ inputs.godot-treeish }}
limboai-treeish: ${{ inputs.limboai-treeish }}
linux-build:
name: 🐧 Linux
uses: ./.github/workflows/linux.yml
with:
godot-treeish: ${{ inputs.godot-treeish }}
limboai-treeish: ${{ inputs.limboai-treeish }}
macos-build:
name: 🍎 macOS
uses: ./.github/workflows/macos.yml
with:
godot-treeish: ${{ inputs.godot-treeish }}
limboai-treeish: ${{ inputs.limboai-treeish }}
windows-build:
name: 🪟 Windows
uses: ./.github/workflows/windows.yml
with:
godot-treeish: ${{ inputs.godot-treeish }}
limboai-treeish: ${{ inputs.limboai-treeish }}
web-build:
name: 🌐 Web
uses: ./.github/workflows/web.yml
with:
godot-treeish: ${{ inputs.godot-treeish }}
limboai-treeish: ${{ inputs.limboai-treeish }}

120
.github/workflows/web.yml vendored Normal file
View File

@ -0,0 +1,120 @@
name: 🌐 Web builds
on:
workflow_call:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
workflow_dispatch:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
# Global Settings
env:
SCONS_CACHE_LIMIT: 4096
# With `lto=full` VM seems to run out of ram and build fails
SCONSFLAGS: use_static_cpp=yes debug_symbols=no lto=thin optimize=size verbose=yes warnings=extra werror=yes tests=no
EM_VERSION: 3.1.18
EM_CACHE_FOLDER: "emsdk-cache"
NAME_PREFIX: godot.${{inputs.godot-treeish}}.limboai+${{inputs.limboai-treeish}}
jobs:
web-builds:
runs-on: "ubuntu-20.04"
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- name: Template (release)
target: template_release
dlink_enabled: no
- name: Template (release, dlink_enabled=true)
target: template_release
dlink_enabled: yes
- name: Template (debug)
target: template_debug
dlink_enabled: no
- name: Template (debug, dlink_enabled=true)
target: template_debug
dlink_enabled: yes
env:
CACHE_NAME: godot.web.${{matrix.target}}${{ matrix.dlink_enabled == true && '.dlink' || '' }}
steps:
- name: Clone Godot
uses: actions/checkout@v3
with:
repository: godotengine/godot
ref: ${{ inputs.godot-treeish }}
- name: Clone LimboAI module
uses: actions/checkout@v3
with:
path: modules/limboai
ref: ${{ inputs.limboai-treeish }}
- name: Set up Emscripten latest
uses: mymindstorm/setup-emsdk@v12
with:
version: ${{env.EM_VERSION}}
actions-cache-folder: ${{env.EM_CACHE_FOLDER}}
- name: Verify Emscripten setup
run: |
emcc -v
- name: Set up scons
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons==4.4.0
python --version
scons --version
- name: Set up scons cache
uses: actions/cache@v3
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{matrix.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{env.CACHE_NAME}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{env.CACHE_NAME}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{env.CACHE_NAME}}-${{env.GODOT_BASE_BRANCH}}
- name: Compilation
env:
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
run: |
scons platform=web target=${{matrix.target}} dlink_enabled=${{matrix.dlink_enabled}} ${{env.SCONSFLAGS}}
- name: Prepare artifacts
run: |
mkdir -p out/templates/
mv bin/godot.web.template_release.wasm32.zip out/templates/web_release.zip || true
mv bin/godot.web.template_release.wasm32.dlink.zip out/templates/web_dlink_release.zip || true
mv bin/godot.web.template_debug.wasm32.zip out/templates/web_debug.zip || true
mv bin/godot.web.template_debug.wasm32.dlink.zip out/templates/web_dlink_debug.zip || true
rm -rf bin/
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: ${{env.NAME_PREFIX}}.export-templates
path: out/*

176
.github/workflows/windows.yml vendored Normal file
View File

@ -0,0 +1,176 @@
name: 🪟 Windows builds
on:
workflow_call:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
workflow_dispatch:
inputs:
godot-treeish:
description: A tag, branch or commit hash in the Godot repository.
type: string
default: master
limboai-treeish:
description: A tag, branch or commit hash in the LimboAI repository.
type: string
default: master
# Global Settings
env:
SCONS_CACHE_MSVC_CONFIG: true
SCONS_CACHE_LIMIT: 4096
SCONSFLAGS: production=yes tests=no verbose=yes warnings=extra werror=yes
DOTNET_NOLOGO: true
DOTNET_CLI_TELEMETRY_OPTOUT: true
NAME_PREFIX: godot.${{inputs.godot-treeish}}.limboai+${{inputs.limboai-treeish}}
jobs:
windows-builds:
runs-on: "windows-latest"
name: ${{ matrix.name }}
strategy:
fail-fast: false
matrix:
include:
- name: Editor (x86_64, release)
target: editor
arch: x86_64
build-mono: false
- name: Template (x86_64, release)
target: template_release
arch: x86_64
build-mono: false
- name: Template (x86_64, debug)
target: template_debug
arch: x86_64
build-mono: false
# - name: Editor (x86_32, release)
# target: editor
# arch: x86_32
# build-mono: false
- name: Template (x86_32, release)
target: template_release
arch: x86_32
build-mono: false
- name: Template (x86_32, debug)
target: template_debug
arch: x86_32
build-mono: false
- name: Editor .NET (x86_64, release)
target: editor
arch: x86_64
build-mono: true
- name: Template .NET (x86_64, release)
target: template_release
arch: x86_64
build-mono: true
- name: Template .NET (x86_64, debug)
target: template_debug
arch: x86_64
build-mono: true
# - name: Editor .NET (x86_32, release)
# target: editor
# arch: x86_32
# build-mono: true
- name: Template .NET (x86_32, release)
target: template_release
arch: x86_64
build-mono: true
- name: Template .NET (x86_32, debug)
target: template_debug
arch: x86_32
build-mono: true
env:
BIN: godot.windows.${{matrix.target}}.${{matrix.arch}}${{ matrix.build-mono == true && '.mono' || '' }}
steps:
- name: Clone Godot
uses: actions/checkout@v3
with:
repository: godotengine/godot
ref: ${{ inputs.godot-treeish }}
- name: Clone LimboAI module
uses: actions/checkout@v3
with:
path: modules/limboai
ref: ${{ inputs.limboai-treeish }}
- name: Set up Python 3.x
uses: actions/setup-python@v4
with:
python-version: '3.x'
architecture: 'x64'
- name: Set up scons
run: |
python -c "import sys; print(sys.version)"
python -m pip install scons==4.4.0
python --version
scons --version
- name: Set up MSVC problem matcher
uses: ammaraskar/msvc-problem-matcher@master
- name: Set up scons cache
uses: actions/cache@v3
with:
path: ${{github.workspace}}/.scons_cache/
key: ${{matrix.cache-name}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
restore-keys: |
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}-${{github.sha}}
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}-${{github.ref}}
${{env.BIN}}-${{env.GODOT_BASE_BRANCH}}
- name: Compilation
env:
SCONS_CACHE: ${{github.workspace}}/.scons_cache/
run: |
scons -j2 platform=windows target=${{matrix.target}} arch=${{matrix.arch}} module_mono_enabled=${{matrix.build-mono}} ${{env.SCONSFLAGS}}
- name: Generate C# glue
if: matrix.build-mono && matrix.target == 'editor'
run: |
./bin/${{ env.BIN }} --headless --generate-mono-glue ./modules/mono/glue || true
- name: Build .NET solutions
if: matrix.build-mono && matrix.target == 'editor'
run: |
./modules/mono/build_scripts/build_assemblies.py --godot-output-dir=./bin --godot-platform=windows
- name: Prepare artifact
shell: bash
env:
OUTDIR: ${{ startsWith(matrix.target, 'template') && 'out/templates' || 'out/' }}
run: |
rm -f bin/*.{exp,lib,pdb}
mkdir -p out/templates/
mv bin/* ${{env.OUTDIR}}
- name: Upload artifact
uses: actions/upload-artifact@v3
env:
NAME_EDITOR: ${{env.NAME_PREFIX}}.${{matrix.target}}.windows.${{matrix.arch}}${{ matrix.build-mono == true && '.mono' || '' }}
NAME_TEMPLATES: ${{env.NAME_PREFIX}}.export-templates${{ matrix.build-mono == true && '.mono' || '' }}
with:
name: ${{ startsWith(matrix.target, 'template') && env.NAME_TEMPLATES || env.NAME_EDITOR }}
path: out/*