5 Commits

Author SHA1 Message Date
Hermes
87c77dc1fa ci: bump APK versionCode and timestamp AAB names
Some checks failed
Android build / build (push) Successful in 11m31s
Android build / build (release) Failing after 8m2s
2026-08-31 15:05:45 -05:00
Hermes
e53a33c7b5 fix: repair AGP upgrade file corruption
All checks were successful
Android build / build (push) Successful in 9m9s
2026-08-31 13:49:22 -05:00
Hermes
4bbcead398 build: upgrade AGP for Android 16 support
Some checks failed
Android build / build (push) Has been cancelled
2026-08-31 13:30:46 -05:00
Hermes
dcdf69d02a build: target Android 16 / API 36
All checks were successful
Android build / build (push) Successful in 12m16s
2026-08-31 12:17:46 -05:00
Hermes Agent
aae81c202e ci: mark missing signing secrets as non-blocking error
All checks were successful
Android build / build (push) Successful in 10m49s
Android build / build (release) Successful in 10m22s
2026-08-29 12:22:56 -05:00
5 changed files with 48 additions and 12 deletions

View File

@@ -50,11 +50,12 @@ jobs:
set -o pipefail set -o pipefail
sdkmanager \ sdkmanager \
"platform-tools" \ "platform-tools" \
"platforms;android-35" \ "platforms;android-36" \
"build-tools;35.0.0" "build-tools;36.0.0"
- name: Prepare optional release signing - name: Prepare optional release signing
if: github.event_name == 'release' if: github.event_name == 'release'
continue-on-error: true
env: env:
ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }} ANDROID_KEYSTORE_BASE64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }} ANDROID_KEYSTORE_PASSWORD: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
@@ -73,8 +74,8 @@ jobs:
if [ ${#missing[@]} -gt 0 ]; then if [ ${#missing[@]} -gt 0 ]; then
printf -v missing_csv '%s, ' "${missing[@]}" printf -v missing_csv '%s, ' "${missing[@]}"
missing_csv="${missing_csv%, }" missing_csv="${missing_csv%, }"
echo "::warning::Release signing secrets missing: ${missing_csv}. Building unsigned/default-signed release AAB." echo "::error::Release signing secrets missing: ${missing_csv}. Continuing with unsigned/default-signed release AAB."
exit 0 exit 1
fi fi
mkdir -p .ci-secrets mkdir -p .ci-secrets
@@ -95,6 +96,29 @@ jobs:
set -euxo pipefail set -euxo pipefail
printf 'sdk.dir=%s/.android/sdk\n' "$HOME" > local.properties printf 'sdk.dir=%s/.android/sdk\n' "$HOME" > local.properties
- name: Prepare CI build metadata
id: build_meta
shell: bash
run: |
set -euxo pipefail
timestamp_utc="$(date -u +%Y%m%d-%H%M%S)"
version_code="$(date -u +%s)"
project_name="$(basename "$GITHUB_REPOSITORY")"
python3 - "$version_code" <<'PY'
from pathlib import Path
import re, sys
path = Path('app/build.gradle.kts')
text = path.read_text(encoding='utf-8')
new_text, count = re.subn(r'(\bversionCode\s*=\s*)\d+', rf'\g<1>{sys.argv[1]}', text, count=1)
if count != 1:
raise SystemExit('versionCode not found in app/build.gradle.kts')
path.write_text(new_text, encoding='utf-8')
PY
echo "Using CI versionCode: $version_code"
echo "project_name=$project_name" >> "$GITHUB_OUTPUT"
echo "timestamp_utc=$timestamp_utc" >> "$GITHUB_OUTPUT"
echo "version_code=$version_code" >> "$GITHUB_OUTPUT"
- name: Build debug APK - name: Build debug APK
if: github.event_name != 'release' if: github.event_name != 'release'
shell: bash shell: bash
@@ -113,6 +137,18 @@ jobs:
export ANDROID_HOME="$ANDROID_SDK_ROOT" export ANDROID_HOME="$ANDROID_SDK_ROOT"
./gradlew --no-daemon bundleRelease ./gradlew --no-daemon bundleRelease
- name: Rename release AAB for upload
if: github.event_name == 'release'
id: release_aab
shell: bash
run: |
set -euxo pipefail
aab="$(find app/build/outputs/bundle/release -name '*.aab' | head -n 1)"
renamed="app/build/outputs/bundle/release/${{ steps.build_meta.outputs.project_name }}-${{ steps.build_meta.outputs.timestamp_utc }}-release.aab"
mv -f "$aab" "$renamed"
echo "Renamed release AAB to $(basename "$renamed")"
echo "path=$renamed" >> "$GITHUB_OUTPUT"
- name: Upload debug APK - name: Upload debug APK
if: github.event_name != 'release' if: github.event_name != 'release'
uses: actions/upload-artifact@v3 uses: actions/upload-artifact@v3
@@ -129,9 +165,9 @@ jobs:
run: | run: |
set -euxo pipefail set -euxo pipefail
release_id="$(python3 -c 'import json, os; print(json.load(open(os.environ["GITHUB_EVENT_PATH"], encoding="utf-8"))["release"]["id"])')" release_id="$(python3 -c 'import json, os; print(json.load(open(os.environ["GITHUB_EVENT_PATH"], encoding="utf-8"))["release"]["id"])')"
aab="$(find app/build/outputs/bundle/release -name '*.aab' | head -n 1)" aab="${{ steps.release_aab.outputs.path }}"
curl --fail-with-body \ curl --fail-with-body \
--request POST \ --request POST \
--header "Authorization: token ${GITEA_TOKEN}" \ --header "Authorization: token ***" \
--form "attachment=@${aab}" \ --form "attachment=@${aab}" \
"${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}/releases/${release_id}/assets?name=$(basename "$aab")" "${GITHUB_SERVER_URL}/api/v1/repos/${GITHUB_REPOSITORY}/releases/${release_id}/assets?name=$(basename "$aab")"

View File

@@ -3,8 +3,8 @@ set -Eeuo pipefail
APP_NAME="e-SUN" APP_NAME="e-SUN"
MODULE="app" MODULE="app"
API_LEVEL="35" API_LEVEL="36"
BUILD_TOOLS_VERSION="35.0.0" BUILD_TOOLS_VERSION="36.0.0"
DIST_DIR="dist" DIST_DIR="dist"
COMMIT_MSG_FILE="commit-message.txt" COMMIT_MSG_FILE="commit-message.txt"

View File

@@ -20,12 +20,12 @@ val hasReleaseSigning = listOf(
android { android {
namespace = "solutions.tretter.esunandroid" namespace = "solutions.tretter.esunandroid"
compileSdk = 35 compileSdk = 36
defaultConfig { defaultConfig {
applicationId = "solutions.tretter.esunandroid" applicationId = "solutions.tretter.esunandroid"
minSdk = 26 minSdk = 26
targetSdk = 35 targetSdk = 36
versionCode = 19 versionCode = 19
versionName = "19" versionName = "19"

View File

@@ -1,5 +1,5 @@
plugins { plugins {
id("com.android.application") version "8.7.2" apply false id("com.android.application") version "8.10.0" apply false
id("org.jetbrains.kotlin.android") version "2.0.21" apply false id("org.jetbrains.kotlin.android") version "2.0.21" apply false
// Required for Kotlin 2.0+ when Compose is enabled // Required for Kotlin 2.0+ when Compose is enabled
id("org.jetbrains.kotlin.plugin.compose") version "2.0.21" apply false id("org.jetbrains.kotlin.plugin.compose") version "2.0.21" apply false

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.2-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists