🌐 Web builds #36
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: 🌐 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.45 | |
EM_CACHE_FOLDER: "emsdk-cache" | |
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: false | |
- name: Template (release, dlink_enabled=true) | |
target: template_release | |
dlink_enabled: true | |
- name: Template (debug) | |
target: template_debug | |
dlink_enabled: false | |
- name: Template (debug, dlink_enabled=true) | |
target: template_debug | |
dlink_enabled: true | |
env: | |
CACHE_NAME: godot.web.${{matrix.target}}${{ matrix.dlink_enabled == true && '.dlink' || '' }} | |
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 Emscripten cache | |
uses: actions/cache@v3 | |
with: | |
path: ${{env.EM_CACHE_FOLDER}} | |
key: ${{env.EM_VERSION}}-${{runner.os}}-libs | |
- name: Set up Emscripten | |
uses: mymindstorm/setup-emsdk@v14 | |
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: ${{env.CACHE_NAME}}-${{inputs.godot-treeish}}-${{inputs.limboai-treeish}}-${{env.LIMBOAI_VERSION}} | |
restore-keys: | | |
${{env.CACHE_NAME}}-${{inputs.godot-treeish}}-${{inputs.limboai-treeish}}-${{env.LIMBOAI_VERSION}} | |
${{env.CACHE_NAME}}-${{inputs.godot-treeish}}-${{inputs.limboai-treeish}} | |
${{env.CACHE_NAME}}-${{inputs.godot-treeish}} | |
- 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/ | |
echo "${GODOT_VERSION}.limboai+${LIMBOAI_VERSION}" > out/templates/version.txt | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{env.NAME_PREFIX}}.export-templates | |
path: out/* |