Skip to content
This repository was archived by the owner on Apr 13, 2026. It is now read-only.

Android CI

Android CI #19

Workflow file for this run

name: Android CI
on:
workflow_dispatch:
inputs:
make_release:
default: false
description: Make a forced release
required: false
type: boolean
workflow_call:
permissions:
contents: write
env:
GRADLE_OPTS: -Dkotlin.incremental=false -Dorg.gradle.jvmargs="-Xmx4g -XX:MaxMetaspaceSize=2g -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout Forked Repo
uses: actions/checkout@v4
with:
repository: pixincreate/Shizuku
ref: main
fetch-depth: 0
submodules: true
- name: Setup Keystore File
run: |
touch signing.properties
echo KEYSTORE_PASSWORD='${{ secrets.KEYSTORE_PASSWORD }}' >> signing.properties
echo KEYSTORE_ALIAS='${{ secrets.KEYSTORE_ALIAS_NAME }}' >> signing.properties
echo KEYSTORE_ALIAS_PASSWORD='${{ secrets.KEYSTORE_PASSWORD_ALIAS }}' >> signing.properties
echo KEYSTORE_FILE=../key.jks >> signing.properties
echo '${{ secrets.KEYSTORE_FILE }}' > keystore.jks.asc
gpg -d --passphrase '${{ secrets.KEYSTORE_PASSWORD_GPG }}' --batch keystore.jks.asc > key.jks
- name: set up JDK 21
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: "21"
cache: "gradle"
- name: Setup Android SDK
uses: android-actions/setup-android@v3
with:
cmdline-tools-version: 13114758
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Build with Gradle
id: buildWithGradle
run: |
echo 'org.gradle.caching=true' >> gradle.properties
echo 'org.gradle.parallel=true' >> gradle.properties
echo 'org.gradle.vfs.watch=true' >> gradle.properties
./gradlew :manager:assembleRelease :manager:assembleDebug
releaseName=`ls manager/build/outputs/apk/release/shizuku*-v*-release.apk | awk -F '(/|.apk)' '{print $6}'` && echo "releaseName=$releaseName" >> $GITHUB_OUTPUT
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
name: ${{ steps.buildWithGradle.outputs.releaseName }}
path: "manager/build/outputs/apk/release/*.apk"
retention-days: 2
- name: Check for Release
id: check_release
run: |
# fetch all once
git fetch --all
# Set a value for force_release if not set already
force_release=${{ inputs.make_release }}
if [ -z "$force_release" ]; then
force_release="false"
fi
NUM_RELEASES=$(git log -10 --oneline | grep 'Bump version' | wc -l)
RELEASE_COMMIT=$(( NUM_RELEASES + RELEASE_COMMIT ))
echo "RELEASE_COMMIT=$RELEASE_COMMIT" >> $GITHUB_ENV
if [[ "${force_release}" == "true" ]]; then
(( RELEASE_COMMIT += 1 ))
echo "RELEASE_COMMIT=$RELEASE_COMMIT" >> $GITHUB_ENV
fi
if [[ $RELEASE_COMMIT -gt 0 ]]; then
echo "Found recent build releases."
else
echo "No recent build releases found."
fi
- name: Release APK
if: ${{ env.RELEASE_COMMIT > 0 }}
uses: "dciborow/action-github-releases@v1.0.1"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: ${{ steps.buildWithGradle.outputs.releaseName }}
prerelease: false
title: ${{ steps.buildWithGradle.outputs.releaseName }}
files: |
manager/build/outputs/apk/release/*.apk