diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index 8dc4dd9..0ace866 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -1,58 +1,83 @@ -name: Build and Release +name: Generated APK AAB (Upload - Create Artifact To Github Action) + +env: + # The name of the main module repository + main_project_module: app on: - push: - branches: - - master - tags: - - "v*" + + push: + branches: + - 'release/**' + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: jobs: - apk: - name: Generate APK - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v2.4.0 - - name: Setup JDK - uses: actions/setup-java@v2.5.0 - with: - distribution: temurin - java-version: "17" - - name: Set execution flag for gradlew - run: chmod +x gradlew - - name: Build APK - run: bash ./gradlew assembleDebug --stacktrace - - name: Upload APK - uses: actions/upload-artifact@v1 - with: - name: apk - path: app/build/outputs/apk/debug/app-debug.apk + build: - release: - name: Release APK - needs: apk - runs-on: ubuntu-latest - steps: - - name: Download APK from build - uses: actions/download-artifact@v1 - with: - name: apk - - name: Create Release - id: create_release - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.run_number }} - release_name: ${{ github.event.repository.name }} v${{ github.run_number }} - - name: Upload Release APK - id: upload_release_asset - uses: actions/upload-release-asset@v1.0.1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - upload_url: ${{ steps.create_release.outputs.upload_url }} - asset_path: apk/app-debug.apk - asset_name: ${{ github.event.repository.name }}.apk - asset_content_type: application/zip + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v3 + + # Set Current Date As Env Variable + - name: Set current date as env variable + run: echo "date_today=$(date +'%Y-%m-%d')" >> $GITHUB_ENV + + # Set Repository Name As Env Variable + - name: Set repository name as env variable + run: echo "repository_name=$(echo '${{ github.repository }}' | awk -F '/' '{print $2}')" >> $GITHUB_ENV + + - name: Set Up JDK + uses: actions/setup-java@v3 + with: + distribution: 'zulu' # See 'Supported distributions' for available options + java-version: '17' + cache: 'gradle' + + - name: Change wrapper permissions + run: chmod +x ./gradlew + + # Run Tests Build + - name: Run gradle tests + run: ./gradlew test + + # Run Build Project + - name: Build gradle project + run: ./gradlew build + + # Create APK Debug + - name: Build apk debug project (APK) - ${{ env.main_project_module }} module + run: ./gradlew assembleDebug + + # Create APK Release + - name: Build apk release project (APK) - ${{ env.main_project_module }} module + run: ./gradlew assemble + + # Create Bundle AAB Release + # Noted for main module build [main_project_module]:bundleRelease + - name: Build app bundle release (AAB) - ${{ env.main_project_module }} module + run: ./gradlew ${{ env.main_project_module }}:bundleRelease + + # Upload Artifact Build + # Noted For Output [main_project_module]/build/outputs/apk/debug/ + - name: Upload APK Debug - ${{ env.repository_name }} + uses: actions/upload-artifact@v3 + with: + name: ${{ env.date_today }} - ${{ env.playstore_name }} - ${{ env.repository_name }} - APK(s) debug generated + path: ${{ env.main_project_module }}/build/outputs/apk/debug/ + + # Noted For Output [main_project_module]/build/outputs/apk/release/ + - name: Upload APK Release - ${{ env.repository_name }} + uses: actions/upload-artifact@v3 + with: + name: ${{ env.date_today }} - ${{ env.playstore_name }} - ${{ env.repository_name }} - APK(s) release generated + path: ${{ env.main_project_module }}/build/outputs/apk/release/ + + # Noted For Output [main_project_module]/build/outputs/bundle/release/ + - name: Upload AAB (App Bundle) Release - ${{ env.repository_name }} + uses: actions/upload-artifact@v3 + with: + name: ${{ env.date_today }} - ${{ env.playstore_name }} - ${{ env.repository_name }} - App bundle(s) AAB release generated + path: ${{ env.main_project_module }}/build/outputs/bundle/release/