112 lines
3.8 KiB
YAML
112 lines
3.8 KiB
YAML
name: Export and release builds
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
inputs:
|
|
release_name:
|
|
description: "Release name (e.g. 3.0.1)"
|
|
required: true
|
|
type: string
|
|
|
|
jobs:
|
|
export-and-release:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
steps:
|
|
- name: Checkout repository
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Read Godot version from project
|
|
id: version
|
|
run: |
|
|
python - <<'PY'
|
|
import re
|
|
import os
|
|
from pathlib import Path
|
|
|
|
text = Path("project.godot").read_text(encoding="utf-8")
|
|
features_match = re.search(r'config/features=PackedStringArray\(([^)]*)\)', text)
|
|
godot_version = "4.6"
|
|
if features_match:
|
|
versions = re.findall(r'"(\d+\.\d+)"', features_match.group(1))
|
|
if versions:
|
|
godot_version = versions[0]
|
|
# setup-godot requires full semver (major.minor.patch)
|
|
if godot_version.count(".") < 2:
|
|
godot_version += ".0"
|
|
output_path = os.environ["GITHUB_OUTPUT"]
|
|
with open(output_path, "a", encoding="utf-8") as fh:
|
|
fh.write(f"godot_version={godot_version}\n")
|
|
PY
|
|
|
|
- name: Download godot-sqlite binaries
|
|
run: |
|
|
curl -fsSL https://github.com/2shady4u/godot-sqlite/releases/download/v4.7/bin.zip -o /tmp/gdsqlite-bin.zip
|
|
unzip -o /tmp/gdsqlite-bin.zip -d addons/godot-sqlite/
|
|
|
|
- name: Setup Java
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 17
|
|
|
|
- name: Setup Android SDK
|
|
uses: android-actions/setup-android@v3
|
|
|
|
- name: Setup Godot
|
|
uses: chickensoft-games/setup-godot@v2
|
|
with:
|
|
version: ${{ steps.version.outputs.godot_version }}
|
|
use-dotnet: false
|
|
include-templates: true
|
|
|
|
- name: Configure Godot Android settings
|
|
run: |
|
|
mkdir -p ~/.config/godot
|
|
cat > ~/.config/godot/editor_settings-4.tres <<TRES
|
|
[gd_resource type="EditorSettings" format=3]
|
|
[resource]
|
|
export/android/java_sdk_path = "$JAVA_HOME"
|
|
export/android/android_sdk_path = "$ANDROID_HOME"
|
|
TRES
|
|
|
|
- name: Import Godot project
|
|
run: godot --headless --import
|
|
|
|
- name: Install Android build template
|
|
run: godot --headless --install-android-build-template
|
|
|
|
- name: Export builds
|
|
run: |
|
|
mkdir -p build/Windows build/Linux build/Android
|
|
godot --headless --export-release "Windows Kalulu" "build/Windows/Kalulu.exe"
|
|
godot --headless --export-release "Linux Kalulu" "build/Linux/Kalulu.x86_64"
|
|
godot --headless --export-release "Android Kalulu APK" "build/Android/Kalulu.apk"
|
|
godot --headless --export-release "Android Kalulu APK 32 bits" "build/Android/Kalulu-32bits.apk"
|
|
|
|
- name: Package exports
|
|
env:
|
|
VERSION: ${{ inputs.release_name }}
|
|
run: |
|
|
cd build/Windows
|
|
zip -r "../Kalulu-Windows-${VERSION}.zip" .
|
|
cd ../Linux
|
|
zip -r "../Kalulu-Linux-${VERSION}.zip" .
|
|
cd ../Android
|
|
zip -r "../Kalulu-Android-${VERSION}.zip" Kalulu.apk
|
|
zip -r "../Kalulu-Android-32bits-${VERSION}.zip" Kalulu-32bits.apk
|
|
|
|
- name: Create GitHub release
|
|
uses: softprops/action-gh-release@v2
|
|
with:
|
|
tag_name: v${{ inputs.release_name }}
|
|
name: v${{ inputs.release_name }}
|
|
files: |
|
|
build/Kalulu-Windows-${{ inputs.release_name }}.zip
|
|
build/Kalulu-Linux-${{ inputs.release_name }}.zip
|
|
build/Kalulu-Android-${{ inputs.release_name }}.zip
|
|
build/Kalulu-Android-32bits-${{ inputs.release_name }}.zip
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|