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