74 lines
3.0 KiB
YAML
74 lines
3.0 KiB
YAML
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/
|