mirror of
https://github.com/permissionlesstech/bitchat-android.git
synced 2026-08-08 06:46:11 +00:00
143 lines
4.2 KiB
YAML
143 lines
4.2 KiB
YAML
name: Android CI
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
branches: [main, develop]
|
|
pull_request:
|
|
branches: [main, develop]
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
env:
|
|
JAVA_VERSION: 21.0.11+10
|
|
|
|
jobs:
|
|
verify:
|
|
name: Test and lint
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
|
|
|
|
- name: Set up pinned JDK
|
|
uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5
|
|
with:
|
|
distribution: temurin
|
|
java-version: ${{ env.JAVA_VERSION }}
|
|
|
|
- name: Set up and validate Gradle
|
|
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
|
|
|
|
- name: Verify native library inputs
|
|
run: tools/arti-build/verify-checksums.sh
|
|
|
|
- name: Run unit tests
|
|
run: ./gradlew testDebugUnitTest
|
|
|
|
- name: Run lint
|
|
run: ./gradlew lintDebug
|
|
|
|
- name: Upload test reports
|
|
if: always()
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
with:
|
|
name: test-reports
|
|
path: |
|
|
**/build/test-results/
|
|
**/build/reports/tests/
|
|
|
|
- name: Upload lint results
|
|
if: always()
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
with:
|
|
name: lint-results
|
|
path: "**/build/reports/lint-results-*.html"
|
|
|
|
build-debug:
|
|
name: Build debug APK
|
|
runs-on: ubuntu-24.04
|
|
needs: verify
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
|
|
|
|
- name: Set up pinned JDK
|
|
uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5
|
|
with:
|
|
distribution: temurin
|
|
java-version: ${{ env.JAVA_VERSION }}
|
|
|
|
- name: Set up and validate Gradle
|
|
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
|
|
|
|
- name: Build debug APK
|
|
run: ./gradlew assembleDebug
|
|
|
|
- name: Upload debug APK
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
with:
|
|
name: Debug-apk
|
|
path: app/build/outputs/apk/debug/*.apk
|
|
|
|
reproducible-build:
|
|
name: Reproducible release build ${{ matrix.replica }}
|
|
runs-on: ubuntu-24.04
|
|
needs: verify
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
replica: [a, b]
|
|
|
|
steps:
|
|
- name: Checkout code
|
|
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
|
|
|
|
- name: Set up pinned JDK
|
|
uses: actions/setup-java@03ad4de0992f5dab5e18fcb136590ce7c4a0ac95 # v5
|
|
with:
|
|
distribution: temurin
|
|
java-version: ${{ env.JAVA_VERSION }}
|
|
|
|
- name: Set up and validate Gradle
|
|
uses: gradle/actions/setup-gradle@3f131e8634966bd73d06cc69884922b02e6faf92 # v6.2.0
|
|
with:
|
|
cache-disabled: true
|
|
|
|
- name: Build canonical unsigned release
|
|
run: tools/reproducible-builds/build-in-container.sh "$RUNNER_TEMP/release-${{ matrix.replica }}"
|
|
|
|
- name: Upload build replica
|
|
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
|
|
with:
|
|
name: reproducible-release-${{ matrix.replica }}
|
|
path: ${{ runner.temp }}/release-${{ matrix.replica }}/*
|
|
if-no-files-found: error
|
|
|
|
compare-reproducible-builds:
|
|
name: Compare release bytes
|
|
runs-on: ubuntu-24.04
|
|
needs: reproducible-build
|
|
|
|
steps:
|
|
- name: Checkout verification script
|
|
uses: actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803 # v6
|
|
|
|
- name: Download replica A
|
|
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
|
|
with:
|
|
name: reproducible-release-a
|
|
path: ${{ runner.temp }}/release-a
|
|
|
|
- name: Download replica B
|
|
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
|
|
with:
|
|
name: reproducible-release-b
|
|
path: ${{ runner.temp }}/release-b
|
|
|
|
- name: Compare every canonical byte
|
|
run: tools/reproducible-builds/compare-release.sh "$RUNNER_TEMP/release-a" "$RUNNER_TEMP/release-b"
|