🍎 macOS builds #21
Workflow file for this run
This file contains 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: 🍎 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 | |
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@v4 | |
with: | |
repository: godotengine/godot | |
ref: ${{ inputs.godot-treeish }} | |
- name: Clone LimboAI module | |
uses: actions/checkout@v4 | |
with: | |
path: modules/limboai | |
ref: ${{ inputs.limboai-treeish }} | |
# Inits GODOT_VERSION, LIMBOAI_VERSION and NAME_PREFIX environment variables. | |
- uses: ./modules/limboai/.github/actions/init-version | |
- 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: ${{env.BIN}}-${{inputs.godot-treeish}}-${{inputs.limboai-treeish}}-${{env.LIMBOAI_VERSION}} | |
restore-keys: | | |
${{env.BIN}}-${{inputs.godot-treeish}}-${{inputs.limboai-treeish}}-${{env.LIMBOAI_VERSION}} | |
${{env.BIN}}-${{inputs.godot-treeish}}-${{inputs.limboai-treeish}} | |
${{env.BIN}}-${{inputs.godot-treeish}} | |
- 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@v4 | |
with: | |
repository: godotengine/godot | |
ref: ${{ inputs.godot-treeish }} | |
- name: Clone LimboAI module | |
uses: actions/checkout@v4 | |
with: | |
path: modules/limboai | |
ref: ${{ inputs.limboai-treeish }} | |
# Inits GODOT_VERSION, LIMBOAI_VERSION and NAME_PREFIX environment variables. | |
- uses: ./modules/limboai/.github/actions/init-version | |
- name: Download editor artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: macos-editor | |
path: bin/ | |
# Zipping the editor bundle to retain executable bit; | |
# workaround for: https://github.com/actions/upload-artifact/issues/38 | |
- 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 | |
pushd out/editor | |
zip -r Godot.app.zip Godot.app | |
rm -rf Godot.app | |
echo -e "## Why another ZIP inside?\n\nWorkaround for: https://github.com/actions/upload-artifact/issues/38\n" > README.md | |
popd | |
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 | |
echo "${GODOT_VERSION}.limboai+${LIMBOAI_VERSION}" > out/templates/version.txt | |
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/* |