Update android.yml #31
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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: Move APK Release to output directory | |
run: | | |
mkdir -p app/build/outputs/apk/release/ | |
mv app/build/outputs/apk/release/app-release-unsigned.apk app/build/outputs/apk/release/app-release.apk | |
# **🚀 بررسی وجود فایل APK Release** | |
- 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 | |
# **🚀 آپلود خروجیها به عنوان Artifact برای دانلود از GitHub Actions** | |
- 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 | |
# **🚀 ایجاد نسخه جدید در Release GitHub** | |
- 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 }} | |
# **🚀 آپلود APK Debug به Releases** | |
- 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 }} | |
# **🚀 آپلود APK Release به Releases** | |
- 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 }} | |
# **🚀 آپلود AAB Release به Releases** | |
- 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 }} |