Update android.yml #15
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 Gradle Project | |
run: ./gradlew build -x lint --continue | |
- 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: Sign APK Release | |
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 ${{ env.main_project_module }}/build/outputs/apk/release/app-release-signed.apk ${{ env.main_project_module }}/build/outputs/apk/release/app-release-unsigned.apk | |
# Verify the APK signature | |
- name: Verify APK Signature | |
run: apksigner verify ${{ env.main_project_module }}/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: ${{ env.main_project_module }}/build/outputs/apk/debug/*.apk | |
- name: Upload APK Release as Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: APK-Release-${{ env.VERSION }} | |
path: ${{ env.main_project_module }}/build/outputs/apk/release/*.apk | |
- name: Upload AAB as Artifact | |
uses: actions/upload-artifact@v4 | |
with: | |
name: AAB-Release-${{ env.VERSION }} | |
path: ${{ env.main_project_module }}/build/outputs/bundle/release/*.aab | |
# ایجاد نسخه جدید در Release GitHub با متن `Released by GitHub Actions` | |
- 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: ${{ env.main_project_module }}/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: ${{ env.main_project_module }}/build/outputs/apk/release/*.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: ${{ env.main_project_module }}/build/outputs/bundle/release/*.aab | |
tag_name: ${{ env.VERSION }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |