Skip to content

Android upload

Android upload #14

name: Android upload
on:
workflow_dispatch:
#release:
# types: [published]
#push:
# tags:
# - 'godot-dice-roller-[0-9]+.[0-9]+.[0-9]+'
# paths:
# - "version"
# - ".github/workflows/publish-android.yml"
# - "export_presets.android.example"
env:
ANDROID_SERVICE_ACCOUNT_JSON: ${{ secrets.ANDROID_SERVICE_ACCOUNT_JSON }}
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
ANDROID_KEYSTORE_ALIAS: ${{ secrets.ANDROID_KEYSTORE_ALIAS }}
ANDROID_STORE_PASSWORD: ${{ secrets.ANDROID_STORE_PASSWORD }}
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
ANDROID_KEYSTORE_DEBUG_BASE64: ${{ secrets.ANDROID_KEYSTORE_DEBUG_BASE64 }}
SERVICE_ACCOUNT_JSON: ${{ secrets.ANDROID_SERVICE_ACCOUNT_JSON }}
WORKING_DIRECTORY: .
APPNAME: Godot Dice Roller
APPDOMAIN: net.canvoki.godot_dice_roller
jobs:
deploy:
#if: github.ref == 'refs/heads/prod'
runs-on: ubuntu-latest
permissions:
contents: write
container:
image: barichello/godot-ci:4.3
steps:
- name: Checkout source code
uses: actions/checkout@v3
- name: Godot Asset Lib Client install
shell: bash
run: |
sudo apt install imagemagick
pip install --user godot-asset-library-client
- name: Read version number and version code
run: |
python tools/android-metadata.py # generates android metadata from README.md, CHANGES.md and screenshots
GODOT_VERSION=$(godot-asset-library-client project-field godot_version)
APPNAME=$(cat metadata/en-US/title.txt)
VERSION_NAME=$(godot-asset-library-client project-field project_version)
IFS='.' read -r -a v <<<"$VERSION_NAME"
VERSION_CODE=$(printf "%03d" ${v[*]})
echo "GODOT_VERSION=$GODOT_VERSION" >> $GITHUB_ENV
echo "APPNAME=$APPNAME" >> $GITHUB_ENV
echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV
echo "VERSION_CODE=$VERSION_CODE" >> $GITHUB_ENV
- name: Create service-account.json
if: false
run: echo $SERVICE_ACCOUNT_JSON > service-account.json
- name: Create keystores
if: false
run: |
echo $ANDROID_KEYSTORE_BASE64 | base64 --decode > release.keystore
echo $ANDROID_KEYSTORE_DEBUG_BASE64 | base64 --decode > debug.keystore
- name: Create export_presets.cfg and inject values
run: |
sed -i "s|VERSION_CODE|$VERSION_CODE|g" $WORKING_DIRECTORY/export_presets.cfg
sed -i "s|VERSION_NAME|$VERSION_NAME|g" $WORKING_DIRECTORY/export_presets.cfg
sed -i "s|APPNAME|$APPNAME|g" $WORKING_DIRECTORY/export_presets.cfg
- name: Create export_credentials.cfg and inject values
if: false
run: |
mkdir $WORKING_DIRECTORY/.godot/
cp $WORKING_DIRECTORY/export_credentials.android.example $WORKING_DIRECTORY/.godot/export_credentials.cfg
sed -i "s|KEYSTORE_RELEASE_PATH|$GITHUB_WORKSPACE/release.keystore|g" $WORKING_DIRECTORY/.godot/export_credentials.cfg
sed -i "s|KEYSTORE_DEBUG_PATH|$GITHUB_WORKSPACE/debug.keystore|g" $WORKING_DIRECTORY/.godot/export_credentials.cfg
sed -i "s|ANDROID_KEYSTORE_ALIAS|$ANDROID_KEYSTORE_ALIAS|g" $WORKING_DIRECTORY/.godot/export_credentials.cfg
sed -i "s|ANDROID_KEYSTORE_PASSWORD|$ANDROID_KEYSTORE_PASSWORD|g" $WORKING_DIRECTORY/.godot/export_credentials.cfg
- name: Godot Android export (barichello)
run: godot -v --export-release "Android" --headless
- name: Godot Android export (dulvui)
if: false
uses: dulvui/godot-android-export@v4.0.4
with:
godot-version: ${{ env.GODOT_VERSION }}
working-directory: $WORKING_DIRECTORY
- name: Publish to Play Store
if: false
uses: r0adkll/upload-google-play@v1
with:
serviceAccountJson: service-account.json
packageName: ${{ env.APPDOMAIN}}
releaseFiles: ${{ env.APPNAME }}.aab
track: "internal"
status: completed
# GITHUB RELEASES
- name: Bundle aab to apk (signed)
if: false
run: |
wget -q https://github.com/google/bundletool/releases/download/1.14.0/bundletool-all-1.14.0.jar
java -jar bundletool-all-1.14.0.jar build-apks --bundle=${{ env.APPNAME }}.aab --output=${{ env.APPNAME }}.apks \
--ks=release.keystore --ks-pass=pass:"$ANDROID_STORE_PASSWORD" --ks-key-alias="$ANDROID_KEYSTORE_ALIAS" \
--key-pass=pass:"$ANDROID_KEYSTORE_PASSWORD" --mode=universal
unzip -p ${{ env.APPNAME }}.apks universal.apk > ${{ env.APPNAME }}.apk
# GITHUB RELEASES
- name: Bundle aab to apk (unsigned)
run: |
wget -q https://github.com/google/bundletool/releases/download/1.14.0/bundletool-all-1.14.0.jar
java -jar bundletool-all-1.14.0.jar build-apks --bundle=${{ env.APPNAME }}.aab --output=${{ env.APPNAME }}.apks \
--mode=universal
unzip -p ${{ env.APPNAME }}.apks universal.apk > ${{ env.APPNAME }}.apk
- name: Upload binaries to Github release
uses: svenstaro/upload-release-action@v2
with:
repo_token: ${{ secrets.GITHUB_TOKEN }}
file: ./${{ env.APPNAME }}.apk
asset_name: ${{ env.APPNAME }}.apk
tag: ${{ env.VERSION_NAME }}-${{ env.VERSION_CODE }}
overwrite: true
body: "${{ env.APPNAME }} - version: ${{ env.VERSION_NAME }} code: ${{ env.VERSION_CODE }}"