86 lines
3.2 KiB
YAML
86 lines
3.2 KiB
YAML
name: android-release
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- main
|
|
tags:
|
|
- 'v*'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
build:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Set up JDK 17
|
|
uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: 17
|
|
|
|
- name: Set up Android SDK
|
|
run: |
|
|
export ANDROID_SDK_ROOT="$HOME/android-sdk"
|
|
mkdir -p "$ANDROID_SDK_ROOT/cmdline-tools"
|
|
curl -fsSL -o /tmp/cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
|
|
unzip -q /tmp/cmdline-tools.zip -d /tmp/cmdline-tools
|
|
mv /tmp/cmdline-tools/cmdline-tools "$ANDROID_SDK_ROOT/cmdline-tools/latest"
|
|
export PATH="$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools:$PATH"
|
|
yes | sdkmanager --sdk_root="$ANDROID_SDK_ROOT" --licenses >/dev/null || true
|
|
sdkmanager --sdk_root="$ANDROID_SDK_ROOT" 'platform-tools' 'platforms;android-34' 'build-tools;34.0.0'
|
|
echo "ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT" >> "$GITHUB_ENV"
|
|
echo "$ANDROID_SDK_ROOT/cmdline-tools/latest/bin" >> "$GITHUB_PATH"
|
|
echo "$ANDROID_SDK_ROOT/platform-tools" >> "$GITHUB_PATH"
|
|
|
|
- name: Set up Gradle cache
|
|
uses: gradle/actions/setup-gradle@v3
|
|
|
|
- name: Write release keystore
|
|
env:
|
|
CODEXMOBILE_KEYSTORE_BASE64: ${{ secrets.CODEXMOBILE_KEYSTORE_BASE64 }}
|
|
CODEXMOBILE_KEYSTORE_PASSWORD: ${{ secrets.CODEXMOBILE_KEYSTORE_PASSWORD }}
|
|
CODEXMOBILE_KEY_ALIAS: ${{ secrets.CODEXMOBILE_KEY_ALIAS }}
|
|
CODEXMOBILE_KEY_PASSWORD: ${{ secrets.CODEXMOBILE_KEY_PASSWORD }}
|
|
run: |
|
|
if [ -z "$CODEXMOBILE_KEYSTORE_BASE64" ] || [ -z "$CODEXMOBILE_KEYSTORE_PASSWORD" ] || [ -z "$CODEXMOBILE_KEY_ALIAS" ] || [ -z "$CODEXMOBILE_KEY_PASSWORD" ]; then
|
|
echo "Missing release signing secrets" >&2
|
|
exit 1
|
|
fi
|
|
echo "$CODEXMOBILE_KEYSTORE_BASE64" | base64 -d > "$HOME/codexmobile-release.jks"
|
|
{
|
|
echo "CODEXMOBILE_STORE_FILE=$HOME/codexmobile-release.jks"
|
|
echo "CODEXMOBILE_STORE_PASSWORD=$CODEXMOBILE_KEYSTORE_PASSWORD"
|
|
echo "CODEXMOBILE_KEY_ALIAS=$CODEXMOBILE_KEY_ALIAS"
|
|
echo "CODEXMOBILE_KEY_PASSWORD=$CODEXMOBILE_KEY_PASSWORD"
|
|
} >> "$GITHUB_ENV"
|
|
|
|
- name: Build release APK
|
|
run: |
|
|
chmod +x gradlew
|
|
./gradlew assembleRelease
|
|
|
|
- name: Compute release tag
|
|
run: |
|
|
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
|
|
echo "RELEASE_TAG=${GITHUB_REF_NAME}" >> "$GITHUB_ENV"
|
|
else
|
|
echo "RELEASE_TAG=main-${GITHUB_RUN_NUMBER}-${GITHUB_SHA::7}" >> "$GITHUB_ENV"
|
|
fi
|
|
|
|
- name: Publish Gitea release
|
|
uses: akkuman/gitea-release-action@v1
|
|
env:
|
|
NODE_OPTIONS: --experimental-fetch
|
|
with:
|
|
tag_name: ${{ env.RELEASE_TAG }}
|
|
target_commitish: ${{ github.sha }}
|
|
files: |
|
|
app/build/outputs/apk/release/*.apk
|
|
body: |
|
|
CodexMobile release built from ${{ github.ref_name }} at ${{ github.sha }}.
|
|
prerelease: false
|
|
draft: false
|