name: Android Release Build and Publish on: push: branches: - master workflow_dispatch: jobs: build: name: Build APK and Release runs-on: ubuntu-latest steps: # Step 1: Check out the repository - name: Checkout repository uses: actions/checkout@v3 # Step 2: Set up JDK - name: Set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'temurin' java-version: '17' # Step 3: Grant execution permissions for Gradle wrapper - name: Grant execute permission for gradlew run: chmod +x ./gradlew # Step 4: Build the release APK - name: Build release APK run: ./gradlew assembleRelease # Step 5: Archive the generated APK - name: Archive release APK uses: actions/upload-artifact@v3 with: name: lobe-chat-android-beta.apk path: app/build/outputs/apk/release/lobe-chat-android-beta.apk # Step 6: Create a GitHub Release and upload APK - name: Create Release id: create_release uses: actions/create-release@v1 env: GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} with: tag_name: ${{ github.ref }} release_name: Release ${{ github.ref }} draft: false prerelease: false # Step 7: Upload APK to the Release - name: Upload Release Asset uses: actions/upload-release-asset@v1 env: GITHUB_TOKEN: ${{ secrets.PERSONAL_ACCESS_TOKEN }} with: upload_url: ${{ steps.create_release.outputs.upload_url }} asset_path: app/build/outputs/apk/release/app-release.apk asset_name: app-release.apk asset_content_type: application/vnd.android.package-archive