Skip to content

Release 0.2.0

Release 0.2.0 #51

Workflow file for this run

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/