Optimize for Android 15 & Push beta apk #49
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Android CI | |
env: | |
# The name of the main module repository | |
main_project_module: app | |
# The name of the Play Store | |
playstore_name: Checklist | |
# Keystore Path (Replace to your KeyStore if you wanna use this CI in your forked) | |
ks_path: KeyStore.jks | |
# Keystore Password (Replace ${{ secrets.KEY_STORE }} to your password such as 123456) | |
ks_store_pass: ${{ secrets.KEY_STORE }} | |
# Keystore Alias (Replace to your alias) | |
ks_alias: ${{ secrets.KEY_STORE_ALIAS }} | |
# Keystore Alias Password (Replace to your alias password) | |
ks_alias_pass: ${{ secrets.KEY_STORE }} | |
on: | |
# Triggers the workflow on push or pull request events but only for default and protected branches | |
push: | |
branches: [ master ] | |
pull_request: | |
branches: [ master ] | |
# Allows you to run this workflow manually from the Actions tab | |
workflow_dispatch: | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# Set Current Date As Env Variable | |
- name: Set current date as env variable | |
run: echo "date_today=$(date +'%Y-%m-%d')" >> $GITHUB_ENV | |
# Set Repository Name As Env Variable | |
- name: Set repository name as env variable | |
run: echo "repository_name=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV | |
- name: Set Up JDK | |
uses: actions/setup-java@v3 | |
with: | |
distribution: 'zulu' # See 'Supported distributions' for available options | |
java-version: '17' | |
cache: 'gradle' | |
- name: Change wrapper permissions | |
run: chmod +x ./gradlew | |
# Run Tests Build | |
- name: Run gradle tests | |
run: ./gradlew test | |
# Run Build Project | |
- name: Build gradle project | |
run: ./gradlew build | |
# Create APK Debug | |
- name: Build apk debug project (APK) - ${{ env.main_project_module }} module | |
run: ./gradlew assembleDebug | |
# Create Bundle AAB Release | |
# Noted for main module build [main_project_module]:bundleRelease | |
- name: Build app bundle release (AAB) - ${{ env.main_project_module }} module | |
run: ./gradlew ${{ env.main_project_module }}:bundleRelease | |
# - name: Build APK(s) Debug from bundle using bundletool | |
# run: java -jar ".github/lib/bundletool.jar" build-apks --bundle=${{ env.main_project_module }}/build/outputs/bundle/debug/${{ env.artifact_name }}-debug.aab --output=${{ env.main_project_module }}/build/outputs/bundle/debug/${{ env.artifact_name }}-debug.apks --mode=universal | |
- name: Set Env Artifact name from generated aab | |
run: | | |
cd ${{ env.main_project_module }}/build/outputs/bundle/release/ | |
files=(*) | |
echo "generated_name_aab=${files[0]%.*}" >> $GITHUB_ENV | |
# Build APK From Bundle Using Bundletool | |
# Noted For Output [main_project_module]/build/outputs/bundle/release/ | |
- name: Build APK(s) Release from bundle using bundletool (Path same with bundle output) | |
run: java -jar ".github/lib/bundletool.jar" build-apks --bundle=${{ env.main_project_module }}/build/outputs/bundle/release/${{ env.generated_name_aab }}.aab --output=${{ env.main_project_module }}/build/outputs/bundle/release/${{ env.generated_name_aab }}.apks --mode=universal --ks="app/${{ env.ks_path }}" --ks-pass=pass:${{ env.ks_store_pass }} --ks-key-alias=${{ env.ks_alias }} --key-pass=pass:${{ env.ks_alias_pass }} | |
# Duplicate APK(s) Release to zip file and extract | |
- name: Duplicate APK(s) Release to zip file and extract | |
run: | | |
cd ${{ env.main_project_module }}/build/outputs/bundle/release/ | |
unzip -p ${{ env.generated_name_aab }}.apks universal.apk > ${{ env.generated_name_aab }}.apk | |
- name: Classification | |
run: | | |
cd ${{ env.main_project_module }}/build/outputs/bundle/release/ | |
mkdir ./apks/ | |
mkdir ./apk/ | |
mkdir ./aab/ | |
mv ./app-release.apks ./apks/app-release.apks | |
mv ./app-release.apk ./apk/app-release.apk | |
mv ./app-release.aab ./aab/app-release.aab | |
# Upload Artifact Build | |
# Debug apk | |
- name: Upload APK Debug - ${{ env.repository_name }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.date_today }} - ${{ env.playstore_name }} - APK debug generated | |
path: ${{ env.main_project_module }}/build/outputs/apk/debug/ | |
# Unsigned Release | |
- name: Upload Unsigned APK Release - ${{ env.repository_name }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.date_today }} - ${{ env.playstore_name }} - APK unsigned release generated | |
path: ${{ env.main_project_module }}/build/outputs/apk/release/ | |
# APKS | |
- name: Upload APKS Release - ${{ env.repository_name }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.date_today }} - ${{ env.playstore_name }} - APKS release generated | |
path: ${{ env.main_project_module }}/build/outputs/bundle/release/apks/ | |
# APK | |
- name: Upload APK Release - ${{ env.repository_name }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.date_today }} - ${{ env.playstore_name }} - APK release generated | |
path: ${{ env.main_project_module }}/build/outputs/bundle/release/apk/ | |
# AAB | |
- name: Upload AAB (App Bundle) Release - ${{ env.repository_name }} | |
uses: actions/upload-artifact@v3 | |
with: | |
name: ${{ env.date_today }} - ${{ env.playstore_name }} - App bundle(s) AAB release generated | |
path: ${{ env.main_project_module }}/build/outputs/bundle/release/aab/ |