Skip to content

Update android.yml

Update android.yml #34

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 "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"
| 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 }}