diff --git a/.gitea/workflows/build.yaml b/.gitea/workflows/build.yaml index b4a199f..3530481 100644 --- a/.gitea/workflows/build.yaml +++ b/.gitea/workflows/build.yaml @@ -9,45 +9,61 @@ jobs: - name: Check out repository code uses: actions/checkout@v4 - - name: Auto-Detect Godot Version and Setup Engine + + - name: Auto-Detect Godot Version and Setup Engine (With Caching) run: | echo "🔍 Parsing project.godot to identify the target engine version..." - - # Extracts the first value out of config/features (e.g., "4.7") - # Finds the line, isolates the contents of the first set of quotes, and strips spaces VERSION_SHORT=$(grep "config/features" project.godot | sed -E 's/^[^\"]*\"([^\"]+)\".*/\1/' | xargs) if [ -z "$VERSION_SHORT" ]; then - echo "❌ Error: Could not determine Godot version from project.godot. Defaulting to 4.7" VERSION_SHORT="4.7" fi - # Standardizes the formatting naming convention for paths vs engine filenames 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 "----------------------------------------------" - echo "📥 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 + # 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 "📥 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 build/linux ./godot --headless --export-release "Linux" build/linux/godot_number_factory.x86_64 + - name: debug + run: | + ls -la build/linux + - name: Upload Linux Build Artifact uses: actions/upload-artifact@v4 with: