tools for exporting godot projects via Github Actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
name: Android export
description: Android export

inputs:
  android-keystore-base64:
    description: The base64 encoded keystore
    required: false
  android-password:
    description: The password of the keystore
    required: false
    default: android

runs:
  using: composite
  steps:
    - name: Setup
      uses: bend-n/godot-actions/.github/actions/setup-godot@main

    - name: Get export name
      id: get-export-name
      uses: bend-n/godot-actions/.github/actions/get-export-name@main
      with:
        platform: Android

    - name: Download android sdks
      if: steps.get-export-name.outputs.export-name
      run: |
        # Generate android keystore and settings
        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::Downloading Android SDKs"
          mkdir -p ${ANDROID_HOME}/cmdline-tools
          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 /root/debug.keystore
          wget -nv https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip -O ~/tools.zip 
          unzip ~/tools.zip -d ${ANDROID_HOME}/cmdline-tools && rm ~/tools.zip && echo "Finished unzipping"
          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" && echo "Installed Android SDKs"
          echo "::endgroup::"
        fi
      shell: bash

    - name: Setup editor settings
      if: steps.get-export-name.outputs.export-name
      run: |
        mkdir -p ~/.config/godot/
        mv /root/.config/godot/editor_settings-3.tres ~/.config/godot/editor_settings-3.tres
      shell: bash

    - name: Build (release)
      if: inputs.android-keystore-base64 && steps.get-export-name.outputs.export-name
      run: |
        password="${{ inputs.android-password }}"
        echo "::group::Build android (release)"
        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"
        mkdir -p build/android
        godot -v --export "${{steps.get-export-name.outputs.export-name}}" ./build/android/$NAME.apk
        echo "::endgroup::"
      shell: bash

    - name: Build (debug)
      if: ${{ ! inputs.android-keystore-base64 && steps.get-export-name.outputs.export-name }}
      run: |
        echo "::group::Build android (debug)"
        mkdir -p build/android || true
        godot -v --export-debug "${{steps.get-export-name.outputs.export-name}}" ./build/android/$NAME.apk
        echo "::endgroup::"
      shell: bash

    - name: Upload
      if: steps.get-export-name.outputs.export-name
      uses: actions/upload-artifact@v1
      with:
        name: android
        path: build/android