mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-08-15 06:56:30 +00:00
140 lines
3.5 KiB
YAML
140 lines
3.5 KiB
YAML
name: Android CI
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches: [ "main", "develop" ]
|
|
pull_request:
|
|
branches: [ "main", "develop" ]
|
|
|
|
jobs:
|
|
verify:
|
|
name: Test & Lint
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Set up JDK 17
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
java-version: '17'
|
|
distribution: 'temurin'
|
|
|
|
- name: Setup Gradle
|
|
uses: gradle/gradle-build-action@v3
|
|
|
|
- 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: Grant execute permission for gradlew
|
|
run: chmod +x gradlew
|
|
|
|
- name: Cache Gradle packages
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-gradle-
|
|
|
|
- name: Run unit tests
|
|
run: ./gradlew testDebugUnitTest
|
|
|
|
- name: Run lint
|
|
run: ./gradlew lintDebug
|
|
|
|
- name: Upload test reports
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-reports
|
|
path: |
|
|
**/build/test-results/
|
|
**/build/reports/tests/
|
|
|
|
- name: Upload lint results
|
|
uses: actions/upload-artifact@v4
|
|
if: always()
|
|
with:
|
|
name: lint-results
|
|
path: '**/build/reports/lint-results-*.html'
|
|
|
|
build:
|
|
name: Build ${{ matrix.variant }}
|
|
runs-on: ubuntu-latest
|
|
needs: verify
|
|
strategy:
|
|
matrix:
|
|
variant: [Debug, Release]
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
submodules: recursive
|
|
|
|
- name: Set up JDK 17
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
java-version: '17'
|
|
distribution: 'temurin'
|
|
|
|
- name: Setup Gradle
|
|
uses: gradle/gradle-build-action@v3
|
|
|
|
- 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: Grant execute permission for gradlew
|
|
run: chmod +x gradlew
|
|
|
|
- name: Cache Gradle packages
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.gradle/caches
|
|
~/.gradle/wrapper
|
|
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
|
restore-keys: |
|
|
${{ runner.os }}-gradle-
|
|
|
|
- name: Build ${{ matrix.variant }} APK
|
|
run: ./gradlew assemble${{ matrix.variant }}
|
|
|
|
- name: Upload ${{ matrix.variant }} APK
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{ matrix.variant }}-apk
|
|
path: app/build/outputs/apk/**/*.apk
|