diff --git a/.gitignore b/.gitignore index c8be054..68a2d21 100644 --- a/.gitignore +++ b/.gitignore @@ -44,3 +44,6 @@ app.*.map.json /android/app/release /android/app/build/ .gradle/ +release-apks/ +gitea-runner/data/ +gitea-runner/.env diff --git a/build_apks.bat b/build_apks.bat new file mode 100644 index 0000000..015e6eb --- /dev/null +++ b/build_apks.bat @@ -0,0 +1,59 @@ +@echo off +setlocal enabledelayedexpansion + +echo ======================================================== +echo Oggauer Gemeindetrommler - Android APK Builder +echo ======================================================== +echo. + +set FLUTTER=C:\src\flutter\bin\flutter.bat +if not exist "%FLUTTER%" ( + set FLUTTER=flutter +) + +echo [1/4] Dependencies laden... +call %FLUTTER% pub get +if %ERRORLEVEL% NEQ 0 ( + echo [FEHLER] 'flutter pub get' fehlgeschlagen. + pause + exit /b %ERRORLEVEL% +) + +echo. +echo [2/4] Universelle Release APK bauen... +call %FLUTTER% build apk --release +if %ERRORLEVEL% NEQ 0 ( + echo [FEHLER] 'flutter build apk --release' fehlgeschlagen. + pause + exit /b %ERRORLEVEL% +) + +echo. +echo [3/4] Split-per-ABI APKs bauen (fuer schlankere Downloads)... +call %FLUTTER% build apk --release --split-per-abi + +echo. +echo [4/4] APKs organisieren... +if not exist "release-apks" mkdir "release-apks" + +if exist "build\app\outputs\flutter-apk\app-release.apk" ( + copy /Y "build\app\outputs\flutter-apk\app-release.apk" "release-apks\oggauer-gemeindetrommler-universal.apk" >nul +) +if exist "build\app\outputs\flutter-apk\app-arm64-v8a-release.apk" ( + copy /Y "build\app\outputs\flutter-apk\app-arm64-v8a-release.apk" "release-apks\oggauer-gemeindetrommler-arm64.apk" >nul +) +if exist "build\app\outputs\flutter-apk\app-armeabi-v7a-release.apk" ( + copy /Y "build\app\outputs\flutter-apk\app-armeabi-v7a-release.apk" "release-apks\oggauer-gemeindetrommler-armv7.apk" >nul +) +if exist "build\app\outputs\flutter-apk\app-x86_64-release.apk" ( + copy /Y "build\app\outputs\flutter-apk\app-x86_64-release.apk" "release-apks\oggauer-gemeindetrommler-x86_64.apk" >nul +) + +echo. +echo ======================================================== +echo ERFOLG! Alle APKs befinden sich im Ordner: +echo %CD%\release-apks\ +echo ======================================================== +echo. +explorer release-apks +pause diff --git a/gitea-runner/.env.example b/gitea-runner/.env.example new file mode 100644 index 0000000..3b38f81 --- /dev/null +++ b/gitea-runner/.env.example @@ -0,0 +1,9 @@ +# Gitea URL +GITEA_INSTANCE_URL=https://git.djnizz.at + +# Hier das Token einfügen aus Gitea: +# Website-Verwaltung -> Aktionen -> Runner -> "Neuen Runner erstellen" +GITEA_RUNNER_REGISTRATION_TOKEN=hier_dein_token_einfuegen + +# Beliebiger Name für den Runner +GITEA_RUNNER_NAME=oracle-arm-runner diff --git a/gitea-runner/README.md b/gitea-runner/README.md new file mode 100644 index 0000000..af65eea --- /dev/null +++ b/gitea-runner/README.md @@ -0,0 +1,25 @@ +# Gitea Act Runner (Oracle Cloud ARM64 / Docker) + +Docker Compose Setup für den Gitea CI/CD Runner zum automatischen Bauen der Android-APKs. + +## Schnellstart + +1. **Token holen:** + In Gitea unter **Website-Verwaltung** (oder Repo-Einstellungen) ➔ **Aktionen** ➔ **Runner** ➔ **Neuen Runner erstellen** das Registrierungs-Token kopieren. + +2. **Konfiguration erstellen:** + ```bash + cp .env.example .env + nano .env + ``` + Dort das kopierte Token bei `GITEA_RUNNER_REGISTRATION_TOKEN` eintragen. + +3. **Runner starten:** + ```bash + docker compose up -d + ``` + +4. **Logs ansehen:** + ```bash + docker compose logs -f + ``` diff --git a/gitea-runner/docker-compose.yml b/gitea-runner/docker-compose.yml new file mode 100644 index 0000000..c55251b --- /dev/null +++ b/gitea-runner/docker-compose.yml @@ -0,0 +1,23 @@ +version: '3.8' + +services: + gitea-runner: + image: gitea/act_runner:latest + container_name: gitea-runner + restart: always + environment: + # URL deiner Gitea-Instanz + - GITEA_INSTANCE_URL=${GITEA_INSTANCE_URL:-https://git.djnizz.at} + # Registrierungs-Token aus Gitea (Website-Verwaltung -> Aktionen -> Runner -> "Neuen Runner erstellen") + - GITEA_RUNNER_REGISTRATION_TOKEN=${GITEA_RUNNER_REGISTRATION_TOKEN} + # Name des Runners in Gitea + - GITEA_RUNNER_NAME=${GITEA_RUNNER_NAME:-oracle-arm-runner} + # TLS-Verifizierung überspringen (falls SSL abgelaufen/selbstsigniert ist) + - GITEA_RUNNER_INSECURE=true + # Maximale parallele Jobs + - GITEA_RUNNER_CAPACITY=2 + volumes: + # Docker-Socket des Host-Systems (nötig für Container-Builds wie Flutter) + - /var/run/docker.sock:/var/run/docker.sock + # Persistenter Speicher: Registrierung bleibt nach Neustart erhalten + - ./data:/data