Files
Obtainium/.github/workflows/android.yml
2023-10-05 11:29:03 +01:00

84 lines
2.8 KiB
YAML

name: android
on:
workflow_dispatch:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: subosito/flutter-action@v2
- name: Build APKs
run: |
sed -i 's/signingConfig signingConfigs.release//g' android/app/build.gradle
flutter build apk && flutter build apk --split-per-abi
- name: Sign APKs
env:
KEYSTORE_BASE64: ${{ secrets.KEYSTORE_BASE64 }}
KEYSTORE_PASS: ${{ secrets.KEYSTORE_PASS }}
run: |
echo "${KEYSTORE_BASE64}" | base64 -d > apksign.keystore
for apk in ./build/app/outputs/flutter-apk/*-release*.apk; do
out=${apk/-release/-release-signed}
${ANDROID_HOME}/build-tools/30.0.2/apksigner sign --ks apksign.keystore --ks-pass env:KEYSTORE_PASS --out "${out}" "${apk}"
echo "$(sha256sum ${out})"
done
rm apksign.keystore
- name: Extract Version
id: extract_version
run: |
VERSION=$(grep -oP "currentVersion = '\K[^']+" lib/main.dart)
echo "::set-output name=version::$VERSION"
- name: Create Release And Upload APKs
uses: ncipollo/release-action@v1
with:
token: ${{ secrets.GAT }}
tag: "v${{ steps.extract_version.outputs.version }}-beta"
prerelease: true
artifacts: ./build/app/outputs/flutter-apk/*-signed*.apk
continue-on-error: true
- name: Wait For 10 Seconds
run: sleep 10
- name: Verify If APKs Have Been Uploaded
id: check_for_apk
run: |
release_info=$(curl -s "https://api.github.com/repos/ImranR98/Obtainium/releases/latest" -H "Authorization: Bearer ${{ secrets.GAT }}")
apk_asset_count=$(echo $release_info | jq '.assets | length')
release_id=$(echo $release_info | jq -r '.id')
if [[ $apk_asset_count -eq 0 ]]; then
echo "Deleting the release $release_id"
echo "::set-output name=delete_latest_release::true"
else
echo "APK found. Not deleting the release $release_id"
echo "::set-output name=delete_latest_release::false"
fi
- name: Delete The Latest Release If No APKs Found
uses: ClementTsang/delete-tag-and-release@v0.3.1
with:
delete_release: true
tag_name: "v${{ steps.extract_version.outputs.version }}-beta"
env:
GITHUB_TOKEN: ${{ secrets.GAT }}
if: steps.check_for_apk.outputs.delete_latest_release == 'true'
- name: Archive Reports For Job
uses: actions/upload-artifact@v3
with:
name: reports
path: '*/build/reports'
if: ${{ always() }}