mirror of
https://github.com/Cuteminded/jellyframe.git
synced 2026-10-23 11:00:36 +02:00
112 lines
3.9 KiB
YAML
112 lines
3.9 KiB
YAML
name: Build Android APK
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
workflow_call:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
concurrency:
|
|
group: apk-${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
env:
|
|
GODOT_VERSION: 4.7.2
|
|
|
|
jobs:
|
|
build:
|
|
name: Build Android debug APK
|
|
runs-on: ubuntu-24.04
|
|
timeout-minutes: 30
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
steps:
|
|
- name: Check out source code
|
|
uses: actions/checkout@v7
|
|
with:
|
|
persist-credentials: false
|
|
|
|
- name: Set up Java
|
|
uses: actions/setup-java@v6
|
|
with:
|
|
distribution: temurin
|
|
java-version: '17'
|
|
|
|
- name: Set up Gradle
|
|
uses: gradle/actions/setup-gradle@v6
|
|
with:
|
|
gradle-version: '8.10.2'
|
|
|
|
- name: Set up Android SDK
|
|
uses: android-actions/setup-android@v4
|
|
|
|
- name: Install Android SDK packages
|
|
run: |
|
|
sdkmanager "platform-tools" "platforms;android-35" "platforms;android-36" "build-tools;36.1.0"
|
|
|
|
- name: Install Godot and export templates
|
|
run: |
|
|
release="${GODOT_VERSION}-stable"
|
|
base_url="https://github.com/godotengine/godot-builds/releases/download/${release}"
|
|
curl --fail --location --retry 3 "${base_url}/Godot_v${release}_linux.x86_64.zip" -o "$RUNNER_TEMP/godot.zip"
|
|
curl --fail --location --retry 3 "${base_url}/Godot_v${release}_export_templates.tpz" -o "$RUNNER_TEMP/templates.tpz"
|
|
mkdir -p "$RUNNER_TEMP/godot" "$HOME/.local/share/godot/export_templates"
|
|
unzip -q "$RUNNER_TEMP/godot.zip" -d "$RUNNER_TEMP/godot"
|
|
mv "$RUNNER_TEMP/godot/Godot_v${release}_linux.x86_64" "$RUNNER_TEMP/godot/godot"
|
|
chmod +x "$RUNNER_TEMP/godot/godot"
|
|
echo "$RUNNER_TEMP/godot" >> "$GITHUB_PATH"
|
|
unzip -q "$RUNNER_TEMP/templates.tpz" -d "$RUNNER_TEMP/export-templates"
|
|
template_dir="$HOME/.local/share/godot/export_templates/${GODOT_VERSION}.stable"
|
|
mv "$RUNNER_TEMP/export-templates/templates" "$template_dir"
|
|
|
|
- name: Install Android build template
|
|
run: |
|
|
template_dir="$HOME/.local/share/godot/export_templates/${GODOT_VERSION}.stable"
|
|
mkdir -p android/build
|
|
unzip -q "$template_dir/android_source.zip" -d android/build
|
|
printf '%s\n' "${GODOT_VERSION}.stable" > android/.build_version
|
|
chmod +x android/build/gradlew
|
|
|
|
- name: Create Android debug keystore
|
|
run: |
|
|
mkdir -p "$HOME/.android"
|
|
keytool -genkeypair -noprompt -keystore "$RUNNER_TEMP/debug.keystore" \
|
|
-alias androiddebugkey -storepass android -keypass android \
|
|
-dname "CN=Android Debug,O=Android,C=US" -keyalg RSA -keysize 2048 -validity 10000
|
|
|
|
- name: Configure Android export
|
|
run: |
|
|
mkdir -p "$HOME/.config/godot"
|
|
cat > "$HOME/.config/godot/editor_settings-${GODOT_VERSION%.*}.tres" <<EOF
|
|
[gd_resource type="EditorSettings" format=3]
|
|
|
|
[resource]
|
|
export/android/android_sdk_path = "$ANDROID_HOME"
|
|
export/android/java_sdk_path = "$JAVA_HOME"
|
|
export/android/debug_keystore = "$RUNNER_TEMP/debug.keystore"
|
|
export/android/debug_keystore_user = "androiddebugkey"
|
|
export/android/debug_keystore_pass = "android"
|
|
EOF
|
|
|
|
- name: Build Android APK
|
|
run: bash tools/build-android.sh
|
|
|
|
- name: Verify APK signature
|
|
run: |
|
|
"$ANDROID_HOME/build-tools/36.1.0/apksigner" verify --verbose dist/jellyframe-android.apk
|
|
|
|
- name: Set artifact date
|
|
id: date
|
|
run: echo "date=$(date -u '+%d-%m-%Y')" >> "$GITHUB_OUTPUT"
|
|
|
|
- name: Upload APK
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: ${{ steps.date.outputs.date }}-jellyframe-android
|
|
path: dist/jellyframe-android.apk
|
|
if-no-files-found: error
|
|
retention-days: 14
|
|
archive: false
|