mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-08-15 06:56:30 +00:00
127 lines
3.9 KiB
YAML
127 lines
3.9 KiB
YAML
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
|
|
with:
|
|
submodules: recursive
|
|
|
|
- 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: Set up Rust 1.95.0
|
|
uses: dtolnay/rust-toolchain@1.95.0
|
|
with:
|
|
targets: aarch64-linux-android,armv7-linux-androideabi,x86_64-linux-android,i686-linux-android
|
|
|
|
- name: Set up Android NDK
|
|
run: sdkmanager "ndk;28.2.13676358"
|
|
|
|
- name: Install cargo-ndk
|
|
run: cargo install cargo-ndk --version 4.1.2 --locked
|
|
|
|
- name: Build NDR FFI from pinned source
|
|
run: ./app/src/main/ndr-ffi/build-android.sh
|
|
|
|
- name: Verify generated NDR binding is current
|
|
run: git diff --exit-code -- app/src/main/java/uniffi/ndr_ffi/ndr_ffi.kt
|
|
|
|
- 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 }}
|