name: Build Godot Project (Linux) on: [push] jobs: build-linux: runs-on: ubuntu-latest steps: - name: Check out repository code uses: actions/checkout@v4 - name: Auto-Detect Godot Version and Setup Engine (With Caching) run: | echo "🔍 Parsing project.godot to identify the target engine version..." VERSION_SHORT=$(grep "config/features" project.godot | sed -E 's/^[^\"]*\"([^\"]+)\".*/\1/' | xargs) if [ -z "$VERSION_SHORT" ]; then VERSION_SHORT="4.7" fi VERSION_URL="${VERSION_SHORT}-stable" VERSION_FILE="${VERSION_SHORT}.stable" # Paths inside our persistent volume CACHE_DIR="/root/.godot-si-cache/${VERSION_FILE}" echo "🎯 Detected Target Version: $VERSION_SHORT" echo "----------------------------------------------" # Check if this specific version is already cached if [ -f "${CACHE_DIR}/godot" ] && [ -f "${CACHE_DIR}/linux_release.x86_64" ]; then echo "🚀 Cache Hit! Found Godot ${VERSION_SHORT} locally. Copying files..." cp "${CACHE_DIR}/godot" ./godot mkdir -p ~/.local/share/godot/export_templates/${VERSION_FILE} cp "${CACHE_DIR}/linux_release.x86_64" ~/.local/share/godot/export_templates/${VERSION_FILE}/linux_release.x86_64 else echo "📥 Cache Miss. Downloading Godot Engine ($VERSION_URL)..." curl -L "https://github.com/godotengine/godot/releases/download/${VERSION_URL}/Godot_v${VERSION_URL}_linux.x86_64.zip" -o godot.zip unzip godot.zip mv "Godot_v${VERSION_URL}_linux.x86_64" godot chmod +x godot echo "📥 Downloading Export Templates ($VERSION_URL)..." curl -L "https://github.com/godotengine/godot/releases/download/${VERSION_URL}/Godot_v${VERSION_URL}_export_templates.tpz" -o templates.zip unzip templates.zip echo "🔧 Mapping Template Directories..." mkdir -p ~/.local/share/godot/export_templates/${VERSION_FILE} mv templates/linux_release.x86_64 ~/.local/share/godot/export_templates/${VERSION_FILE}/linux_release.x86_64 echo "💾 Saving files to persistent host cache for next time..." mkdir -p "${CACHE_DIR}" cp ./godot "${CACHE_DIR}/godot" cp ~/.local/share/godot/export_templates/${VERSION_FILE}/linux_release.x86_64 "${CACHE_DIR}/linux_release.x86_64" fi - name: Export Linux Binary run: | mkdir -p "${{ gitea.workspace }}/build/linux" mkdir -p build/linux ./godot --headless --export-release "Linux" build/linux/godot_number_factory.x86_64 - name: debug run: | ls -la "${{ gitea.workspace }}/build/linux" ls -la build/linux - name: Upload Linux Build Artifact uses: actions/upload-artifact@v4 with: name: linux-build path: build/linux/