Add build automation and CI publishing workflow
Some checks failed
Android CI / build (push) Has been cancelled

This commit is contained in:
dom4k
2026-03-16 19:04:20 +00:00
parent c833fd467d
commit 842bfb4c9d
4 changed files with 124 additions and 0 deletions

26
.github/workflows/android.yml vendored Normal file
View File

@@ -0,0 +1,26 @@
name: Android CI
on:
push:
branches: ["master", "main"]
pull_request:
jobs:
build:
runs-on: ubuntu-latest
steps:
- 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
uses: android-actions/setup-android@v3
- name: Build debug APK
working-directory: android
run: ./gradlew assembleDebug --no-daemon

53
Makefile Normal file
View File

@@ -0,0 +1,53 @@
SHELL := /bin/bash
PROJECT_ROOT := $(CURDIR)
ANDROID_DIR := $(PROJECT_ROOT)/android
WEBSITE_DIR := $(PROJECT_ROOT)/website
DOWNLOADS_DIR := $(WEBSITE_DIR)/downloads
META_DIR := $(WEBSITE_DIR)/assets/meta
APK_PATH := $(ANDROID_DIR)/app/build/outputs/apk/debug/app-debug.apk
PUBLISHED_APK := $(DOWNLOADS_DIR)/app-debug.apk
VERSION_FILE := $(META_DIR)/version.json
.PHONY: help client-version-bump client-build client-publish publish \
server-start server-stop server-restart server-status server-rebuild
help:
@echo "Targets:"
@echo " make client-build - bump version and build debug APK"
@echo " make client-publish - copy APK to website and refresh version metadata"
@echo " make publish - bump version, build APK, publish client, reload nginx"
@echo " make server-start - start nginx"
@echo " make server-stop - stop nginx"
@echo " make server-restart - restart nginx"
@echo " make server-status - show nginx status"
@echo " make server-rebuild - test nginx config and reload nginx"
client-version-bump:
@$(PROJECT_ROOT)/scripts/bump_version.sh
client-build: client-version-bump
cd $(ANDROID_DIR) && ./gradlew assembleDebug --no-daemon
client-publish:
@mkdir -p $(DOWNLOADS_DIR) $(META_DIR)
cp $(APK_PATH) $(PUBLISHED_APK)
@$(PROJECT_ROOT)/scripts/update_site_metadata.sh
publish: client-build client-publish server-rebuild
server-start:
sudo systemctl start nginx
server-stop:
sudo systemctl stop nginx
server-restart:
sudo systemctl restart nginx
server-status:
sudo systemctl status nginx --no-pager
server-rebuild:
sudo /usr/sbin/nginx -t
sudo systemctl reload nginx

18
scripts/bump_version.sh Executable file
View File

@@ -0,0 +1,18 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BUILD_FILE="$ROOT_DIR/android/app/build.gradle.kts"
current_code="$(grep -E 'versionCode = [0-9]+' "$BUILD_FILE" | head -n1 | sed -E 's/.*versionCode = ([0-9]+)/\1/')"
current_name="$(grep -E 'versionName = "[0-9]+\.[0-9]+\.[0-9]+"' "$BUILD_FILE" | head -n1 | sed -E 's/.*versionName = "([0-9]+\.[0-9]+\.[0-9]+)"/\1/')"
IFS='.' read -r major minor patch <<< "$current_name"
new_code=$((current_code + 1))
new_patch=$((patch + 1))
new_name="${major}.${minor}.${new_patch}"
sed -i -E "s/versionCode = [0-9]+/versionCode = ${new_code}/" "$BUILD_FILE"
sed -i -E "s/versionName = \"[0-9]+\.[0-9]+\.[0-9]+\"/versionName = \"${new_name}\"/" "$BUILD_FILE"
echo "Version bumped to ${new_name} (${new_code})"

27
scripts/update_site_metadata.sh Executable file
View File

@@ -0,0 +1,27 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
BUILD_FILE="$ROOT_DIR/android/app/build.gradle.kts"
META_DIR="$ROOT_DIR/website/assets/meta"
APK_FILE="$ROOT_DIR/website/downloads/app-debug.apk"
OUTPUT_FILE="$META_DIR/version.json"
mkdir -p "$META_DIR"
version_code="$(grep -E 'versionCode = [0-9]+' "$BUILD_FILE" | head -n1 | sed -E 's/.*versionCode = ([0-9]+)/\1/')"
version_name="$(grep -E 'versionName = "[0-9]+\.[0-9]+\.[0-9]+"' "$BUILD_FILE" | head -n1 | sed -E 's/.*versionName = "([0-9]+\.[0-9]+\.[0-9]+)"/\1/')"
build_date="$(date -u +"%Y-%m-%dT%H:%M:%SZ")"
apk_size="$(stat -c %s "$APK_FILE")"
cat > "$OUTPUT_FILE" <<EOF
{
"versionName": "$version_name",
"versionCode": $version_code,
"buildDateUtc": "$build_date",
"apkPath": "downloads/app-debug.apk",
"apkSizeBytes": $apk_size
}
EOF
echo "Site metadata updated: $version_name ($version_code)"