name: Release on: workflow_dispatch: push: tags: - 'v*.*.*' # Triggers for tags like v1.0.0 jobs: build: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up JDK uses: actions/setup-java@v4 with: distribution: temurin java-version: 17 - name: Setup Gradle uses: gradle/gradle-build-action@v2 with: gradle-version: wrapper - name: Cache Gradle files uses: actions/cache@v3 with: path: | ~/.gradle/caches ~/.gradle/wrapper key: gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} restore-keys: | gradle-${{ runner.os }}- - name: Grant execute permission for Gradlew run: chmod +x ./gradlew - name: Build Release APKs (with architecture splits) run: ./gradlew assembleRelease --no-daemon --stacktrace - name: List APK files run: | echo "APK files built:" find app/build/outputs/apk/release -name "*.apk" -type f -exec ls -lh {} \; - name: Rename APKs for GitHub Release run: | cd app/build/outputs/apk/release [ -f "app-arm64-v8a-release-unsigned.apk" ] && mv app-arm64-v8a-release-unsigned.apk bitchat-android-arm64.apk [ -f "app-x86_64-release-unsigned.apk" ] && mv app-x86_64-release-unsigned.apk bitchat-android-x86_64.apk [ -f "app-universal-release-unsigned.apk" ] && mv app-universal-release-unsigned.apk bitchat-android-universal.apk - name: DEBUG run: | set -x pwd ls -all cd app/build/outputs/ ls -all tree || ls -R # Optional: Sign APKs (uncomment and configure secrets when ready) # - name: Sign APKs # uses: r0adkll/sign-android-release@v1 # with: # releaseDirectory: app/build/outputs/apk/release # signingKeyBase64: ${{ secrets.SIGNING_KEY }} # alias: ${{ secrets.ALIAS }} # keyStorePassword: ${{ secrets.KEY_STORE_PASSWORD }} # keyPassword: ${{ secrets.KEY_PASSWORD }} - name: Upload APKs as artifacts uses: actions/upload-artifact@v4 with: name: bitchat-android-release-${{ github.ref_name }} path: app/build/outputs/apk/release/*.apk retention-days: 30 if-no-files-found: error release: needs: build runs-on: ubuntu-latest steps: - name: Download release artifacts uses: actions/download-artifact@v4 with: name: bitchat-android-release-${{ github.ref_name }} path: release - name: Create GitHub Release uses: softprops/action-gh-release@v2 with: files: | release/bitchat-android-arm64.apk release/bitchat-android-x86_64.apk release/bitchat-android-universal.apk name: Release ${{ github.ref_name }} body: | **bitchat-android-arm64.apk** - ARM64 (most phones) **bitchat-android-x86_64.apk** - x86_64 (Chromebooks, tablets) **bitchat-android-universal.apk** - All architectures (fallback) env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}