name: 🌐 Web builds on: workflow_call: inputs: godot-ref: description: A tag, branch or commit hash in the Godot repository. type: string default: master limboai-ref: description: A tag, branch or commit hash in the LimboAI repository. type: string default: master workflow_dispatch: inputs: godot-ref: description: A tag, branch or commit hash in the Godot repository. type: string default: master limboai-ref: 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: false - name: Template (release, dlink_enabled=true) target: template_release dlink: true - name: Template (debug) target: template_debug dlink: false - name: Template (debug, dlink_enabled=true) target: template_debug dlink: true env: CACHE_NAME: godot.web.${{matrix.target}}${{ matrix.dlink == true && '.dlink' || '' }} steps: - name: Clone Godot uses: actions/checkout@v4 with: repository: godotengine/godot ref: ${{ inputs.godot-ref }} - name: Clone LimboAI module uses: actions/checkout@v4 with: path: modules/limboai ref: ${{ inputs.limboai-ref }} # 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@v4 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@v4 with: path: ${{github.workspace}}/.scons_cache/ key: ${{env.CACHE_NAME}}-${{inputs.godot-ref}}-${{inputs.limboai-ref}}-${{env.LIMBOAI_VERSION}} restore-keys: | ${{env.CACHE_NAME}}-${{inputs.godot-ref}}-${{inputs.limboai-ref}}-${{env.LIMBOAI_VERSION}} ${{env.CACHE_NAME}}-${{inputs.godot-ref}}-${{inputs.limboai-ref}} ${{env.CACHE_NAME}}-${{inputs.godot-ref}} - name: Compilation env: SCONS_CACHE: ${{github.workspace}}/.scons_cache/ run: | scons platform=web target=${{matrix.target}} dlink_enabled=${{matrix.dlink}} ${{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@v4 with: name: ${{env.NAME_PREFIX}}.${{matrix.target}}.web${{matrix.dlink == true && '.dlink' || ''}} path: out/*