95 lines
2.8 KiB
YAML
95 lines
2.8 KiB
YAML
name: Build APK
|
|
|
|
on:
|
|
workflow_call:
|
|
inputs:
|
|
version-name:
|
|
required: true
|
|
type: string
|
|
build-type:
|
|
required: true
|
|
type: string
|
|
secrets:
|
|
google-services-json:
|
|
required: true
|
|
signing-key-store-base64:
|
|
required: true
|
|
signing-key-alias:
|
|
required: true
|
|
signing-key-password:
|
|
required: true
|
|
signing-store-password:
|
|
required: true
|
|
|
|
jobs:
|
|
build-apk:
|
|
runs-on: ubuntu-latest
|
|
permissions:
|
|
contents: write
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Setup JAVA 17
|
|
uses: actions/setup-java@v3
|
|
with:
|
|
distribution: "temurin"
|
|
java-version: 17
|
|
|
|
- name: Cache Gradle and wrapper
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*') }}
|
|
|
|
- name: Setup Google Services
|
|
run: echo ${{ secrets.google-services-json }} | base64 --decode > ./app/google-services.json
|
|
|
|
- name: Set App Version
|
|
run: |
|
|
export VERSION_NAME='${{ inputs.version-name }}'
|
|
sed -i "s/versionName.*/versionName \"${VERSION_NAME#v}\"/" app/build.gradle
|
|
sed -i "s/versionCode.*/versionCode $(( ($(date +%s) - $(date -d "2022-06-15" +%s)) / 86400 ))/" app/build.gradle
|
|
|
|
- name: Test
|
|
run: ./gradlew test
|
|
|
|
#1
|
|
- name: Decode Keystore
|
|
env:
|
|
ENCODED_STRING: ${{ secrets.signing-key-store-base64 }}
|
|
SIGNING_KEY_STORE_PATH: app/keystore.jks
|
|
|
|
run: |
|
|
echo $ENCODED_STRING > keystore-b64.txt
|
|
base64 -d keystore-b64.txt > $SIGNING_KEY_STORE_PATH
|
|
|
|
#2
|
|
- name: Build ${{ inputs.build-type }} apk
|
|
env:
|
|
SIGNING_KEY_STORE_PATH: app/keystore.jks
|
|
SIGNING_KEY_ALIAS: ${{ secrets.signing-key-alias }}
|
|
SIGNING_KEY_PASSWORD: ${{ secrets.signing-key-password }}
|
|
SIGNING_STORE_PASSWORD: ${{ secrets.signing-store-password }}
|
|
TARGET: ${{ inputs.build-type }}
|
|
run: ./gradlew assemble${TARGET^}
|
|
|
|
- name: Build ${{ inputs.build-type }} bundle
|
|
env:
|
|
SIGNING_KEY_STORE_PATH: app/keystore.jks
|
|
SIGNING_KEY_ALIAS: ${{ secrets.signing-key-alias }}
|
|
SIGNING_KEY_PASSWORD: ${{ secrets.signing-key-password }}
|
|
SIGNING_STORE_PASSWORD: ${{ secrets.signing-store-password }}
|
|
TARGET: ${{ inputs.build-type }}
|
|
run: ./gradlew bundle${TARGET^}
|
|
#3
|
|
- name: Upload ${{ inputs.build-type }} Build to Artifacts
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ inputs.build-type }}-artifacts
|
|
path: |
|
|
app/build/outputs/apk/${{ inputs.build-type }}/
|
|
app/build/outputs/bundle/${{ inputs.build-type }}/
|