tools for exporting godot projects via Github Actions
Diffstat (limited to '.github/actions/export-android/action.yml')
-rw-r--r--.github/actions/export-android/action.yml72
1 files changed, 44 insertions, 28 deletions
diff --git a/.github/actions/export-android/action.yml b/.github/actions/export-android/action.yml
index 945734d..2b8c8c1 100644
--- a/.github/actions/export-android/action.yml
+++ b/.github/actions/export-android/action.yml
@@ -13,41 +13,57 @@ inputs:
runs:
using: composite
steps:
- - name: Setup
+ - name: Setup godot
uses: bend-n/godot-actions/.github/actions/setup-godot@main
- - name: Download android sdks
+ - name: Setup android sdk
run: |
- # Generate android keystore and settings
+ sudo apt-get update && sudo apt-get install -y adb openjdk-11-jdk-headless ca-certificates python python-openssl
+ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export ANDROID_HOME="/usr/lib/android-sdk"
- export PATH="${ANDROID_HOME}/cmdline-tools/cmdline-tools/bin:${PATH}"
- if [[ ! -d ${ANDROID_HOME}/cmdline-tools ]]; then
- echo "::group::Download Android SDKs"
- mkdir -p ${ANDROID_HOME}/cmdline-tools
- keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android -keystore /root/debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999
- wget -q https://dl.google.com/android/repository/commandlinetools-linux-9123335_latest.zip -O ~/tools.zip
- unzip -q ~/tools.zip -d ${ANDROID_HOME}/cmdline-tools && rm ~/tools.zip && echo "Installed command line tools"
- yes | sdkmanager --licenses >/dev/null && echo "Accepted licenses"
- sdkmanager "platform-tools" "build-tools;30.0.3" "platforms;android-29" "cmdline-tools;latest" "cmake;3.10.2.4988404" "ndk;21.4.7075529" >/dev/null && echo "Installed Android SDKs"
- echo "::endgroup::"
- fi
+ wget -nv https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip -O tools.zip
+ sudo mkdir -pv "$ANDROID_HOME"
+ sudo unzip tools.zip -d "$ANDROID_HOME/cmdline-tools" && rm tools.zip
+ PATH="${ANDROID_HOME}/cmdline-tools/cmdline-tools/bin:${PATH}"
+ yes | sdkmanager --licenses >/dev/null
+ sudo sdkmanager "platform-tools" "build-tools;30.0.3" "platforms;android-29" "cmdline-tools;latest" "cmake;3.10.2.4988404" "ndk;21.4.7075529"
+
+ shell: bash
+
+ - name: Setup editor settings
+ run: |
+ mkdir -vp ~/.config/godot
+ curl 'https://raw.githubusercontent.com/bend-n/godot-actions/main/.github/editor-settings.tres' --output ~/.config/godot/editor_settings-3.tres
+
+ # debug keystore is needed for release build /shrug
+ keytool -keyalg RSA -genkeypair -alias androiddebugkey -keypass android -keystore debug.keystore -storepass android -dname "CN=Android Debug,O=Android,C=US" -validity 9999 && mv debug.keystore ~/debug.keystore
+ sed "s@export/android/debug_keystore = \"\"@export/android/debug_keystore = \"$HOME/debug.keystore\"@" -i ~/.config/godot/editor_settings-3.tres
+ shell: bash
+
+ - name: Build (release)
+ if: ${{ inputs.android-keystore-base64 }}
+ run: |
+ echo "$ANDROID_KEYSTORE_BASE64" | base64 --decode > ~/release.keystore
+ ANDROID_KEYSTORE_USER=$(keytool -storepass "$ANDROID_KEYSTORE_PASSWORD" -list -v -keystore ~/release.keystore | grep -E '^Alias name:\s*(.+)$' | cut -d ' ' -f 3-)
+ sed "s@keystore/release=\"\"@keystore/release=\"$HOME/release.keystore\"@g" -i export_presets.cfg
+ sed 's@keystore/release_user=".*"@keystore/release_user="'$ANDROID_KEYSTORE_USER'"@g' -i export_presets.cfg
+ sed 's@keystore/release_password=".*"@keystore/release_password="'$ANDROID_KEYSTORE_PASSWORD'"@g' -i export_presets.cfg
+ mkdir -vp build/android
+ godot -v --export "Android" ./build/android/$NAME.apk
+ env:
+ ANDROID_KEYSTORE_BASE64: ${{ inputs.android-keystore-base64 }}
+ ANDROID_KEYSTORE_PASSWORD: ${{ inputs.android-password }}
shell: bash
- - name: Prep build
- if: inputs.android-keystore-base64
+ - name: Build (debug)
+ if: ${{ inputs.android-keystore-base64 }} == ""
run: |
- echo "::group::Prep build"
- cd "$PROJECT_PATH"
- password="${{ inputs.android-password }}"
- echo "${{ inputs.android-keystore-base64 }}" | base64 --decode > ~/release.keystore && echo "Decoded keystore"
- alias="$(keytool -storepass "$password" -list -v -keystore ~/release.keystore | grep -E '^Alias name:\s*(.+)$' | cut -d ' ' -f 3-)" && echo "Got alias name"
- sed "s@keystore/release=\"\"@keystore/release=\"$HOME/release.keystore\"@g" -i export_presets.cfg && sed 's@keystore/release_user=".*"@keystore/release_user="'$alias'"@g' -i export_presets.cfg && sed 's@keystore/release_password=".*"@keystore/release_password="'$password'"@g' -i export_presets.cfg && echo "Configured export_presets.cfg"
- echo "::endgroup::"
+ mkdir -vp build/android || true
+ godot -v --export-debug "Android" ./build/android/$NAME.apk
shell: bash
- - name: Build
- uses: bend-n/godot-actions/.github/actions/export@main
+ - name: Upload
+ uses: actions/upload-artifact@v1
with:
- debug: ${{ inputs.android-keystore-base64 }}
- extension: apk
- platform: android
+ name: android
+ path: build/android