Skip to content

Release android app #14

Release android app

Release android app #14

Workflow file for this run

name: Release android app
on:
workflow_dispatch:
jobs:
#it's tests but build job is required in our branch policies
build:
name: Build android unit test
runs-on: ubuntu-22.04
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1
with:
access_token: ${{ github.token }}
- name: Checkout Sources
uses: actions/[email protected]
with:
fetch-depth: 50
submodules: 'recursive'
- name: Install System Dependencies (Linux)
run: |
sudo apt-get update
sudo apt-get install -y clang libclang-dev libopencv-dev
- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install uniffi_bindgen
uses: actions-rs/[email protected]
with:
crate: uniffi_bindgen
version: 0.22.0 # Must be in sync with version in Cargo.toml
use-tool-cache: true
- name: Install additional rust targets
run: rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android
- name: Set up JDK environment
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: 17
- name: Install NDK
run: echo "y" | sudo ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "ndk;24.0.8215888" --sdk_root=${ANDROID_SDK_ROOT}
- name: Rust Cache
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
with:
workspaces: rust -> rust/target
- name: Gradle Cache
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
run: |
./gradlew :android:testDebugUnitTest
make:
name: Build signed APKs
runs-on: ubuntu-22.04
# if: github.ref == ' refs/head/main'
steps:
- name: Cancel Previous Runs
uses: styfle/cancel-workflow-action@85880fa0301c86cca9da44039ee3bb12d3bedbfa # 0.12.1
with:
access_token: ${{ github.token }}
- name: Checkout Sources
uses: actions/[email protected]
with:
fetch-depth: 50
submodules: 'recursive'
- name: Install System Dependencies (Linux)
run: |
sudo apt-get update
sudo apt-get install -y clang libclang-dev libopencv-dev
- name: Install Rust stable toolchain
uses: dtolnay/rust-toolchain@stable
- name: Install uniffi_bindgen
uses: actions-rs/[email protected]
with:
crate: uniffi_bindgen
version: 0.22.0 # Must be in sync with version in Cargo.toml
use-tool-cache: true
- name: Install additional rust targets
run: rustup target add aarch64-linux-android armv7-linux-androideabi x86_64-linux-android
- name: Set up JDK environment
uses: actions/setup-java@v4
with:
distribution: 'adopt'
java-version: 17
- name: Install NDK
run: echo "y" | sudo ${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager --install "ndk;24.0.8215888" --sdk_root=${ANDROID_SDK_ROOT}
- name: Rust Cache
uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
with:
workspaces: rust -> rust/target
- name: Gradle Cache
uses: actions/cache@v3
with:
path: |
~/.gradle/caches
~/.gradle/wrapper
key: ${{ runner.os }}-gradle-${{ hashFiles('**/.gradle*', '**/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-
# Build and publish
- name: Assemble release unsigned apk
run: |
./gradlew clean assembleRelease --stacktrace
- name: Sign app APK
uses: r0adkll/sign-android-release@v1
# ID used to access action output
id: sign_app
with:
releaseDirectory: android/build/outputs/apk/release
signingKeyBase64: ${{ secrets.ANDROID_PLAY_STORE_KEYSTORE_BASE64 }}
alias: ${{ secrets.ANDROID_KEYSTORE_KEY_ALIAS }}
keyStorePassword: ${{ secrets.ANDROID_PLAY_STORE_KEYSTORE_PASSWORD }}
keyPassword: ${{ secrets.ANDROID_PLAY_STORE_KEYSTORE_PASSWORD }}
env:
BUILD_TOOLS_VERSION: "34.0.0"
- name: Upload Gplay release APKs
uses: actions/upload-artifact@v3
with:
name: signer-release-signed
path: |
${{steps.sign_app.outputs.signedReleaseFile}}
- name: Publish to Google Play Store
uses: r0adkll/[email protected]
with:
serviceAccountJsonPlainText: ${{ secrets.ANDROID_PLAY_STORE_API_JSON }}
releaseFiles: ${{ steps.sign_app.outputs.signedReleaseFile }}
packageName: io.parity.signer
track: internal