Skip to content

Update android.yml

Update android.yml #32

Workflow file for this run

name: Generated APK AAB (Upload - Create Artifact To Github Action & Release)
env:
main_project_module: app
playstore_name: V2PlusApp
on:
push:
branches:
- 'main'
workflow_dispatch:
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set executable permission for Gradle
run: chmod +x gradlew
- name: Set current date as env variable
run: echo "DATE_TODAY=$(date +'%Y-%m-%d')" >> $GITHUB_ENV
- name: Set repository name as env variable
run: echo "REPO_NAME=$(basename ${{ github.repository }})" >> $GITHUB_ENV
- name: Determine build version
run: |
BASE_TAG="v${{ env.DATE_TODAY }}"
EXISTING_VERSIONS=$(git tag --list "$BASE_TAG*")
if [[ -z "$EXISTING_VERSIONS" ]]; then
VERSION="${BASE_TAG}-v1"
else
LAST_VERSION=$(echo "$EXISTING_VERSIONS" | sort -V | tail -n 1 | grep -oP '\d+$')
NEXT_VERSION=$((LAST_VERSION + 1))
VERSION="${BASE_TAG}-v$NEXT_VERSION"
fi
echo "VERSION=$VERSION" >> $GITHUB_ENV
echo "Final version: $VERSION"
- name: Set Up JDK
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'
cache: 'gradle'
- name: Install Gradle
uses: gradle/gradle-build-action@v2
with:
gradle-version: "8.9"
- name: Run Gradle Tests
run: ./gradlew test
- name: Build APK Debug
run: ./gradlew assembleDebug
- name: Build APK Release
run: ./gradlew assembleRelease
- name: Build AAB Release
run: ./gradlew ${{ env.main_project_module }}:bundleRelease
# **🚀 بررسی و انتقال APK Release**
- name: Find APK Release
run: |
echo "Checking for APK release..."
find app/build/outputs/apk -type f -name "*.apk"
- name: Move APK Release to output directory
run: |
APK_PATH=$(find app/build/outputs/apk/release -type f -name "*.apk" | head -n 1)
if [ -z "$APK_PATH" ]; then
echo "No APK release found!"
exit 1
fi
echo "Found APK at: $APK_PATH"
mv "$APK_PATH" app/build/outputs/apk/release/app-release.apk
- name: Verify if Release APK exists
run: |
if [ -f app/build/outputs/apk/release/app-release.apk ]; then
echo "APK Release file found!"
else
echo "APK Release file not found!"
exit 1
fi
- name: Sign APK
run: |
echo "${{ secrets.SIGNING_KEYSTORE }}" | base64 --decode > keystore.jks
apksigner sign --ks keystore.jks --ks-pass pass:${{ secrets.SIGNING_STORE_PASSWORD }} \
--key-pass pass:${{ secrets.SIGNING_KEY_PASSWORD }} --ks-key-alias ${{ secrets.SIGNING_KEY_ALIAS }} \
--out app/build/outputs/apk/release/app-release-signed.apk app/build/outputs/apk/release/app-release.apk
- name: Verify APK Signature
run: apksigner verify app/build/outputs/apk/release/app-release-signed.apk
- name: Upload APK Debug as Artifact
uses: actions/upload-artifact@v4
with:
name: APK-Debug-${{ env.VERSION }}
path: app/build/outputs/apk/debug/*.apk
- name: Upload APK Release as Artifact
uses: actions/upload-artifact@v4
with:
name: APK-Release-${{ env.VERSION }}
path: app/build/outputs/apk/release/app-release-signed.apk
- name: Upload AAB as Artifact
uses: actions/upload-artifact@v4
with:
name: AAB-Release-${{ env.VERSION }}
path: app/build/outputs/bundle/release/*.aab
- name: Create GitHub Release
id: create_release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ env.VERSION }}
name: "Release - ${{ env.VERSION }}"
body: "### Released by GitHub Actions 🚀"
draft: false
prerelease: false
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload APK Debug to Release
uses: softprops/action-gh-release@v1
with:
files: app/build/outputs/apk/debug/*.apk
tag_name: ${{ env.VERSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload APK Release to Release
uses: softprops/action-gh-release@v1
with:
files: app/build/outputs/apk/release/app-release-signed.apk
tag_name: ${{ env.VERSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload AAB to Release
uses: softprops/action-gh-release@v1
with:
files: app/build/outputs/bundle/release/*.aab
tag_name: ${{ env.VERSION }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}