Update android.yml #35
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: 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 }} |